Skip to content

Commit fafedbc

Browse files
authored
[6e7639a] λ²ˆμ—­ μš”μ²­ πŸ’¬ (#27)
* merge 6e7639a πŸ›° * [6e7639a] λ²ˆμ—­ * [6e7639a] build
1 parent 38650e7 commit fafedbc

16 files changed

Lines changed: 552 additions & 724 deletions

β€ŽGoogle Python Style Guide kor.mdβ€Ž

Lines changed: 108 additions & 135 deletions
Large diffs are not rendered by default.

β€ŽGoogle Python Style Guide/2. Python μ–Έμ–΄ κ·œμΉ™/2.13 Properties.mdβ€Ž

Lines changed: 17 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,77 +2,41 @@
22

33
### 2.13 Properties
44

5-
- `Properties`을 μ ‘κ·Όν•˜κ±°λ‚˜ 데이터값을 μ„€μ •ν•  λ•Œ 보톡 κ°„λ‹¨ν•œ 방법인 κ°€λ²Όμš΄ μ ‘κ·Όμžλ‚˜ `setter` λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν–ˆμ„ κ²ƒμž…λ‹ˆλ‹€.
5+
- `Properties`λŠ” κ°„λ‹¨ν•œ κ³„μ‚°μ΄λ‚˜ 둜직이 ν•„μš”ν•œ attribute을 κ°€μ Έμ˜€κ±°λ‚˜ μ„€μ •ν•˜λŠ” 것을 μ œμ–΄ν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.
6+
- `Properties` κ΅¬ν˜„μ€ λ³΄ν†΅μ˜ attribute 접근에 λŒ€ν•œ 일반적인 κΈ°λŒ€μ™€ μΌμΉ˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
67

78
<a id="s2.13.1-definition"></a>
89

910
#### 2.13.1 μ •μ˜
1011

11-
- κ°„λ‹¨ν•œ 계산을 ν•  λ•Œ 일반적인 속성을 μ ‘κ·Όν•˜λ“―μ΄ 속성을 κ°€μ Έμ˜€κ±°λ‚˜ μ„€μ •ν•˜λŠ” λ©”μ„œλ“œ ν˜ΈμΆœμ„ 포μž₯ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.
12+
- 일반적인 속성을 μ ‘κ·Όν•˜λ“―μ΄ 속성을 κ°€μ Έμ˜€κ±°λ‚˜ μ„€μ •ν•˜λŠ” λ©”μ„œλ“œ ν˜ΈμΆœμ„ 포μž₯ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.
1213

1314
<a id="s2.13.2-pros"></a>
1415

1516
#### 2.13.2 μž₯점
1617

17-
- κ°„λ‹¨ν•œ 속성 접근에 λŒ€ν•΄ λͺ…μ‹œμ μΈ `get`, `set` λ©”μ„œλ“œ ν˜ΈμΆœμ„ μ œκ±°ν•¨μœΌλ‘œμ¨ 가독성이 μ¦κ°€ν•©λ‹ˆλ‹€.
18+
- getter, setter method 호좜 λŒ€μ‹  attribute μ ‘κ·Ό 및 ν• λ‹Ή APIλ₯Ό ν—ˆμš©ν•©λ‹ˆλ‹€.
19+
- attributeλ₯Ό 읽기 μ „μš©μœΌλ‘œ λ§Œλ“œλŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
1820
- [λŠκΈ‹ν•œ 계산법](https://ko.wikipedia.org/wiki/λŠκΈ‹ν•œ_계산법)을 ν—ˆμš©ν•©λ‹ˆλ‹€.
19-
- 클래슀의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μœ μ§€ν•˜λŠ” λ°©λ²•μœΌλ‘œ [Pythonic](https://github.com/Yosseulsin-JOB/Google-Python-Style-Guide-kor/wiki/2.13-properties#pythonic)을 κ³ λ €ν•©λ‹ˆλ‹€.
20-
- μ„±λŠ₯ μΈ‘λ©΄μ—μ„œ, trivial μ ‘κ·Όμž λ©”μ„œλ“œλŠ” 직접 λ³€μˆ˜ 접근이 합리적일 λ•Œ 속성 우회λ₯Ό ν—ˆμš©ν•  ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, μΈν„°νŽ˜μ΄μŠ€λ₯Ό νŒŒκ΄΄ν•˜μ§€ μ•Šκ³  λ―Έλž˜μ— μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•  수 있게 ν•©λ‹ˆλ‹€.
21+
- λ‚΄λΆ€κ°€ class μ‚¬μš©μžμ™€ λ…λ¦½μ μœΌλ‘œ λ°œμ „ν•  λ•Œ 클레슀의 public interfaceλ₯Ό μœ μ§€ κ΄€λ¦¬ν•˜λŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.
2122

2223
<a id="s2.13.3-cons"></a>
2324

2425
#### 2.13.3 단점
2526

26-
- μ—°μ‚°μž μ˜€λ²„ λ‘œλ”©(operator overloading)κ³Ό 같은 λΆ€μž‘μš©μ„ 숨길 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μœ„ 클래슀의 경우 ν˜Όλž€μŠ€λŸ¬μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
27+
- μ—°μ‚°μž μ˜€λ²„ λ‘œλ”©(operator overloading)κ³Ό 같은 λΆ€μž‘μš©μ„ 숨길 수 μžˆμŠ΅λ‹ˆλ‹€.
28+
- ν•˜μœ„ 클래슀의 경우 ν˜Όλž€μŠ€λŸ¬μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
2729

2830
<a id="s2.13.4-decision"></a>
2931

3032
#### 2.13.4 κ²°λ‘ 
3133

32-
- μƒˆ μ½”λ“œμ—μ„œ 속성을 μ‚¬μš©ν•˜μ—¬ 일반적으둜 κ°€λ²Όμš΄ μ ‘κ·Όμž λ˜λŠ” `setter` λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν–ˆλ˜ 데이터λ₯Ό μ ‘κ·Όν•˜κ±°λ‚˜ μ„€μ •ν•©λ‹ˆλ‹€.
33-
- 속성은 `@property` [decorator](#s2.17-function-and-method-decorators)둜 λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€.
34-
- 속성 μžμ²΄κ°€ μž¬μ •μ˜λ˜μ§€ μ•Šμ€ 경우 속성에 λŒ€ν•œ 상속은 λͺ…λ°±ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜ 된 λ©”μ„œλ“œκ°€ 속성에 μ˜ν•΄ ν˜ΈμΆœλ˜λ„λ‘ν•˜λ €λ©΄ μ ‘κ·Όμž λ©”μ„œλ“œλ₯Ό κ°„μ ‘μ μœΌλ‘œ ν˜ΈμΆœν•΄μ•Όν•©λ‹ˆλ‹€([template method design pattern](https://en.wikipedia.org/wiki/Template_method_pattern)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.).
35-
- μ˜¬λ°”λ₯Έ 예
36-
37-
```python
38-
import math
39-
class Square:
40-
"""두 κ°€μ§€ 속성을 κ°€μ§„ μ‚¬κ°ν˜•: μ“°κΈ° κ°€λŠ₯ν•œ 면적(area)κ³Ό μ½κΈ°μ „μš©μΈ λ‘˜λ ˆ(perimeter)
41-
42-
μ‚¬μš©λ°©λ²•:
43-
>>> sq = Square(3)
44-
>>> sq.area
45-
9
46-
>>> sq.perimeter
47-
12
48-
>>> sq.area = 16
49-
>>> sq.side
50-
4
51-
>>> sq.perimeter
52-
16
53-
"""
54-
55-
def __init__(self, side: float):
56-
self.side = side
57-
58-
@property
59-
def area(self) -> float:
60-
"""μ‚¬κ°ν˜•μ˜ 면적을 κ°€μ Έμ˜€κ±°λ‚˜ μ„€μ •ν•©λ‹ˆλ‹€."""
61-
return self._get_area()
62-
63-
@area.setter
64-
def area(self, area: float):
65-
self._set_area(area)
66-
67-
def _get_area(self) -> float:
68-
"""'면적'속성을 κ³„μ‚°ν•˜κΈ° μœ„ν•œ κ°„μ ‘ μ ‘κ·Όμžμž…λ‹ˆλ‹€."""
69-
return self.side ** 2
70-
71-
def _set_area(self, area: float):
72-
"""'면적' 속성을 μ„€μ •ν•˜κΈ° μœ„ν•œ κ°„μ ‘ μ„€μ •μžμž…λ‹ˆλ‹€."""
73-
self.side = math.sqrt(area)
74-
75-
@property
76-
def perimeter(self) -> float:
77-
return self.side * 4
78-
```
34+
- PropertiesλŠ” ν—ˆμš©ν•˜μ§€λ§Œ μ—°μ‚°μž μ˜€λ²„λ‘œλ”©κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ ν•„μš”ν•œ κ²½μš°μ—λ§Œ μ‚¬μš©ν•΄μ•Ό ν•˜λ©° 일반적인 attribute 접근에 λŒ€ν•œ κΈ°λŒ€μ™€ μΌμΉ˜ν•΄μ•Όν•©λ‹ˆλ‹€
35+
- κ·Έλ ‡μ§€ μ•Šμ€ κ²½μš°μ—λŠ” [getters and setters](#getters-and-setters)κ·œμΉ™μ„ λ”°λ₯΄μ„Έμš”.
36+
- 예λ₯Ό λ“€μ–΄, λ‹¨μˆœνžˆ attributeλ₯Ό κ°€μ Έμ˜€κ³  μ„€μ •ν•˜κΈ° μœ„ν•΄ propertyλ₯Ό μ‚¬μš©ν•˜λŠ” 것은 ν—ˆμš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
37+
- 계산이 λ°œμƒν•˜μ§€ μ•ŠμœΌλ―€λ‘œ propertyλŠ” λΆˆν•„μš”ν•©λ‹ˆλ‹€. ([λŒ€μ‹  attributeλ₯Ό public으둜 μ„€μ •ν•©λ‹ˆλ‹€.](#getters-and-setters))
38+
- 이에 λΉ„ν•΄ attribute 접근을 μ œμ–΄ν•˜κ±°λ‚˜ μ‚¬μ†Œν•œ νŒŒμƒ 값을 κ³„μ‚°ν•˜κΈ° μœ„ν•΄ propertyλ₯Ό μ‚¬μš©ν•˜λŠ” 것은 ν—ˆμš©λ©λ‹ˆλ‹€.
39+
- λ‘œμ§μ€ κ°„λ‹¨ν•˜κ³  λ†€λžμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
40+
- PropertiesλŠ” `@property` [decorator](#s2.17-function-and-method-decorators)λ₯Ό μ‚¬μš©ν•˜μ—¬ μƒμ„±ν•΄μ•Όν•©λ‹ˆλ‹€.
41+
- property descriptorλ₯Ό μˆ˜λ™μœΌλ‘œ κ΅¬ν˜„ν•˜λŠ” 것은 [power feature](#power-features)둜 κ°„μ£Όλ©λ‹ˆλ‹€.
42+
- 속성에 λŒ€ν•œ 상속은 λͺ…λ°±ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. subclassκ°€ μž¬μ •μ˜ν•˜κ³  ν™•μž₯ν•˜κΈ° μœ„ν•œ 계산 λ„κ΅¬λ‘œ propertiesλ₯Ό μ‚¬μš©ν•˜μ§€ λ§ˆμ„Έμš”.

β€ŽGoogle Python Style Guide/2. Python μ–Έμ–΄ κ·œμΉ™/2.14 True, False 평가.mdβ€Ž

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@
4242
if not users:
4343
print('μ‚¬μš©μžκ°€ μ—†μŠ΅λ‹ˆλ‹€.')
4444

45-
if foo == 0:
46-
self.handle_zero()
47-
4845
if i % 10 == 0:
4946
self.handle_multiple_of_ten()
5047

@@ -59,9 +56,6 @@
5956
if len(users) == 0:
6057
print('μ‚¬μš©μžκ°€ μ—†μŠ΅λ‹ˆλ‹€.')
6158

62-
if foo is not None and not foo:
63-
self.handle_zero()
64-
6559
if not i % 10:
6660
self.handle_multiple_of_ten()
6761

@@ -70,3 +64,4 @@
7064
```
7165

7266
- `'0'`(즉, `0` λ¬Έμžμ—΄)은 참으둜 ν‰κ°€ν•œλ‹€λŠ” 점에 μœ μ˜ν•΄μ•Όν•©λ‹ˆλ‹€.
67+
- Numpy 배열은 μ•”μ‹œμ  boolean μ»¨ν…μŠ€νŠΈμ—μ„œ μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. `np.array`의 λΉ„μ–΄ μžˆμŒμ„ ν…ŒμŠ€νŠΈν•  λ•Œ `.size` attributeλ₯Ό μ„ ν˜Έν•©λ‹ˆλ‹€. (e.g. `if not users.size`)

β€ŽGoogle Python Style Guide/2. Python μ–Έμ–΄ κ·œμΉ™/2.17 ν•¨μˆ˜μ™€ λ©”μ„œλ“œ Decorators.mdβ€Ž

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@
3939

4040
#### 2.17.3 단점
4141

42-
- DecoratorλŠ” ν•¨μˆ˜μ˜ 인자, λ°˜ν™˜ 값에 λŒ€ν•΄ μž„μ˜μ˜ λ™μž‘μ„ μˆ˜ν–‰ν•  수 있으며 결과적으둜 λ†€λΌμš΄ 암묡적 행동을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ²Œλ‹€κ°€, DecoratorλŠ” importν•  λ•Œ μ‹€ν–‰ν•©λ‹ˆλ‹€. 잘λͺ»λœ Decorator μ½”λ“œλŠ” 회볡이 거의 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.
42+
- DecoratorλŠ” ν•¨μˆ˜μ˜ 인자, λ°˜ν™˜ 값에 λŒ€ν•΄ μž„μ˜μ˜ λ™μž‘μ„ μˆ˜ν–‰ν•  수 있으며 결과적으둜 λ†€λΌμš΄ 암묡적 행동을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
43+
- κ²Œλ‹€κ°€, DecoratorλŠ” object μ •μ˜ μ‹œ μ‹€ν–‰ν•©λ‹ˆλ‹€. module-level 객체(classes, module functions, ...)의 경우 importν•  λ•Œ λ°œμƒν•©λ‹ˆλ‹€.
44+
- Decorator μ½”λ“œ 였λ₯˜λŠ” 볡ꡬ가 거의 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.
4345

4446
<a id="s2.17.4-decision"></a>
4547

β€ŽGoogle Python Style Guide/2. Python μ–Έμ–΄ κ·œμΉ™/2.2 import.mdβ€Ž

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@
22

33
### 2.2 Imports
44

5-
- `import`문을 μ‚¬μš©ν• λ•Œ package와 module을 λŒ€μƒμœΌλ‘œλ§Œ μ‚¬μš©ν•΄μ•Όν•˜κ³  각각의 ν΄λž˜μŠ€λ‚˜ ν•¨μˆ˜μ— λŒ€ν•΄ μ‚¬μš©ν•˜λ©΄ μ•ˆλ©λ‹ˆλ‹€. λ‹€λ§Œ
6-
[typing λͺ¨λ“ˆ](#s3.19.12-imports),
7-
[typing_extensions module](https://github.com/python/typing/tree/master/typing_extensions),
8-
그리고 [six.moves module](https://six.readthedocs.io/#module-six.moves)
9-
을 μ‚¬μš©ν• λ•ŒλŠ” μ˜ˆμ™Έμž…λ‹ˆλ‹€.
5+
- `import`문을 μ‚¬μš©ν• λ•Œ package와 module에 μ‚¬μš©ν•˜κ³  κ°œλ³„ ν΄λž˜μŠ€λ‚˜ ν•¨μˆ˜μ— λŒ€ν•΄ μ‚¬μš©ν•˜λ©΄ μ•ˆλ©λ‹ˆλ‹€. λ‹€λ§Œ [typing λͺ¨λ“ˆ](#s3.19.12-imports), [typing_extensions module](https://github.com/python/typing/tree/master/typing_extensions)μ—μ„œ κ°€μ Έμ˜¨ 클래슀 및 [six.moves module](https://six.readthedocs.io/#module-six.moves)μ—μ„œμ˜ λ¦¬λ””λ ‰μ…˜μ€ 이 κ·œμΉ™μ—μ„œ μ œμ™Έλ©λ‹ˆλ‹€.
106

117
<a id="s2.2.1-definition"></a>
128

@@ -45,4 +41,4 @@
4541

4642
- importλœκ²ƒλ“€κ³Ό κ΄€λ ¨μžˆλŠ” 이름을 μ‚¬μš©ν•˜μ§€λ§ˆμ„Έμš”.
4743
- λͺ¨λ“ˆμ΄ 같은 νŒ¨ν‚€μ§€μ— μžˆλ”λΌλ„ 전체 νŒ¨ν‚€μ§€ 이름을 μ‚¬μš©ν•˜μ„Έμš”.
48-
- μ΄λŠ” 무심코 νŒ¨ν‚€μ§€λ₯Ό λ‘λ²ˆ import ν•˜λŠ”κ²ƒμ„ μ˜ˆλ°©ν•˜λŠ” 것에 도움이 λ©λ‹ˆλ‹€.
44+
- μ΄λŠ” 무심코 νŒ¨ν‚€μ§€λ₯Ό λ‘λ²ˆ import ν•˜λŠ”κ²ƒμ„ μ˜ˆλ°©ν•˜λŠ” 것에 도움이 λ©λ‹ˆλ‹€.
Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,61 @@
11
<a id="s2.20-modern-python"></a>
22

3-
### 2.20 Modern Python : Python 3 그리고 from, \_\_future\_\_, imports
3+
### 2.20 Modern Python : from, \_\_future\_\_, imports
44

5-
- Python 3 버전이 λ‚˜μ™”μŠ΅λ‹ˆλ‹€! 아직 ν”„λ‘œμ νŠΈμ— Python 3을 μ‚¬μš©ν•  μ€€λΉ„κ°€ λ˜μ–΄μžˆλŠ” 건 μ•„λ‹ˆμ§€λ§Œ λͺ¨λ“  μ½”λ“œλŠ” ν˜Έν™˜λ˜λ„λ‘ μž‘μ„±λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. (κ°€λŠ₯ν•œ κ²½μš°μ— Python 3에 따라 ν…ŒμŠ€νŠΈν•©λ‹ˆλ‹€.)
5+
- μƒˆλ‘œμš΄ μ–Έμ–΄ 버전 의미 체계 λ³€κ²½ 사항은 이전 λŸ°νƒ€μž„ λ‚΄μ—μ„œ 파일 λ‹¨μœ„λ‘œ ν™œμ„±ν™”ν•˜κΈ° μœ„ν•΄ νŠΉλ³„ν•œ ν–₯ν›„ κ°€μ Έμ˜€κΈ° 뒀에 μ œμ–΄λ  수 μžˆμŠ΅λ‹ˆλ‹€.
6+
(New language version semantic changes may be gated behind a special future import to enable them on a per-file basis within earlier runtimes.)
67

78
<a id="s2.20.1-definition"></a>
89

910
#### 2.20.1 μ •μ˜
1011

11-
- Python 3λŠ” Pythonμ–Έμ–΄μ—μ„œ μ€‘μš”ν•œ λ³€ν™”κ°€ μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ μ‚¬μš©ν•˜κ³  μžˆλŠ” μ½”λ“œλŠ” 2.7 버전을 μ—Όλ‘ν•˜μ—¬ μž‘μ„±ν•˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€.
12-
- Python3μ—μ„œ μˆ˜μ •μ—†μ΄ μ‚¬μš©ν•  수 μžˆλ„λ‘ 잘 μ€€λΉ„ν•˜κΈ° μœ„ν•΄μ„œ μ½”λ“œμ˜ μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ λ§Œλ“€ 수 있게 ν•˜λŠ” λͺ‡λͺ‡ κ°„λ‹¨ν•œ 것듀이 μžˆμŠ΅λ‹ˆλ‹€.
12+
- `from __future__ import`문을 톡해 보닀 ν˜„λŒ€μ μΈ κΈ°λŠ₯ 쀑 일뢀λ₯Ό ν™œμ„±ν™”ν•  수 있으면 μ˜ˆμƒλ˜λŠ” ν–₯ν›„ Python λ²„μ „μ˜ κΈ°λŠ₯을 쑰기에 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
1313

1414
<a id="s2.20.2-pros"></a>
1515

1616
#### 2.20.2 μž₯점
1717

18-
- Python 3λ₯Ό 염두해 두고 μž‘μ„±λœ μ½”λ“œλŠ” λͺ…ν™•ν•˜κ³  ν”„λ‘œμ νŠΈμ˜ λͺ¨λ“  μ˜μ‘΄μ„±μ΄ Python 3μ—μ„œ μ‹€ν–‰ν•˜κΈ°κ°€ 더 μ‰¬μ›Œμ§‘λ‹ˆλ‹€.
18+
- μ΄λŠ” ν˜Έν™˜μ„±μ„ μ„ μ–Έν•˜κ³  ν•΄λ‹Ή 파일 λ‚΄μ—μ„œ νšŒκ·€λ₯Ό λ°©μ§€ν•˜λ©΄μ„œ νŒŒμΌλ³„λ‘œ 변경이 μ΄λ£¨μ–΄μ§ˆ 수 μžˆμœΌλ―€λ‘œ λŸ°νƒ€μž„ 버전 μ—…κ·Έλ ˆμ΄λ“œλ₯Ό 더 μ›ν™œν•˜κ²Œ λ§Œλ“œλŠ” κ²ƒμœΌλ‘œ μž…μ€‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
19+
- μ΅œμ‹  μ½”λ“œλŠ” ν–₯ν›„ λŸ°νƒ€μž„ μ—…κ·Έλ ˆμ΄λ“œ 쀑에 λ¬Έμ œκ°€ 될 수 μžˆλŠ” 기술적 뢀채가 좕적될 κ°€λŠ₯성이 적기 λ•Œλ¬Έμ— μœ μ§€ 관리가 더 μ‰½μŠ΅λ‹ˆλ‹€.
1920

2021
<a id="s2.20.3-cons"></a>
2122

2223
#### 2.20.3 단점
2324

24-
- μ–΄λ–€ μ‚¬λžŒλ“€μ€ μΆ”κ°€λœ boilerplateκ°€ μΆ”ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” κΈ°λŠ₯을 importν•˜λŠ” 것은 μ΄λ‘€μ μž…λ‹ˆλ‹€.
25+
- μ΄λŸ¬ν•œ μ½”λ“œλŠ” ν•„μš”ν•œ feature 문을 λ„μž…ν•˜κΈ° μ „μ—λŠ” 맀우 였래된 인터프리터 λ²„μ „μ—μ„œ λ™μž‘ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
26+
- 일반적으둜 λ‹€μ–‘ν•œ ν™˜κ²½μ„ μ§€μ›ν•΄μ•Όν•˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œ ν•„μš”ν•©λ‹ˆλ‹€.
2527

2628
<a id="s2.20.4-decision"></a>
2729

2830
#### 2.20.4 κ²°λ‘ 
2931

3032
##### from \_\_future\_\_ imports
3133

32-
- `from __future__ import` ν˜•νƒœλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 λ°”λžŒμ§ν•©λ‹ˆλ‹€. λͺ¨λ“  μƒˆλ‘œμš΄ μ½”λ“œλŠ” λ‹€μŒ 사항이 ν¬ν•¨λ˜μ–΄μ•Ό ν•˜λ©° κ°€λŠ₯ν•œ 경우 κΈ°μ‘΄ μ½”λ“œκ°€ ν˜Έν™˜λ˜λ„λ‘ μ—…λ°μ΄νŠΈ ν•΄μ•Ό ν•©λ‹ˆλ‹€
34+
- `from __future__ import`문을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
35+
- μ£Όμ–΄μ§„ μ†ŒμŠ€νŒŒμΌμ—μ„œ λ”μš± ν˜„λŒ€μ μΈ Python ꡬ문 κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
36+
- `__future__` import 뒀에 κΈ°λŠ₯이 숨겨져 μžˆλŠ” λ²„μ „μ—μ„œ 더 이상 μ‹€ν–‰ν•  ν•„μš”κ°€ μ—†λ‹€λ©΄ ν•΄λ‹Ή 쀄을 자유둭게 μ œκ±°ν•˜μ„Έμš”.
37+
- 3.7 이상이 μ•„λ‹Œ 3.5 이전 λ²„μ „μ—μ„œ 싀행될 수 μžˆλŠ” μ½”λ“œμ—μ„œ κ°€μ Έμ˜¬ 경우
38+
39+
```python
40+
from __future__ import generator_stop
41+
```
42+
43+
- 2.7 버전을 계속 μ§€μ›ν•΄μ•Όν•˜λŠ” 뢀담이 μžˆλŠ” λ ˆκ±°μ‹œ μ½”λ“œμ˜ 경우
3344

3445
```python
3546
from __future__ import absolute_import
3647
from __future__ import division
3748
from __future__ import print_function
3849
```
3950

40-
- `import`에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ [absolute imports](https://www.python.org/dev/peps/pep-0328/), [`/` division behavior](https://www.python.org/dev/peps/pep-0238/), [the `print` function](https://www.python.org/dev/peps/pep-3105/)을 μ°Έμ‘°ν•˜μ„Έμš”.
41-
- μ΄λŸ¬ν•œ importλŠ” ν˜„μž¬ λͺ¨λ“ˆμ—μ„œ μ‚¬μš©λ˜μ§€ μ•Šλ”λΌλ„ μƒλž΅ν•˜κ±°λ‚˜ μ œκ±°ν•˜μ§€ λ§ˆμ„Έμš”. λͺ¨λ“  νŒŒμΌμ— 항상 ν–₯ν›„ importκ°€ μžˆμœΌλ―€λ‘œ λ‚˜μ€‘μ— μ΄λŸ¬ν•œ κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μ‹œμž‘ν•  λ•Œ νŽΈμ§‘ν•˜λŠ” λ™μ•ˆ μžŠμ§€ μ•Šλ„λ‘ ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
42-
- λ‹€λ₯Έ `from __future__` import λͺ…세도 μžˆμœΌλ‹ˆ μ•Œλ§žκ²Œ μ‚¬μš©ν•˜μ„Έμš”. `unicode_literals`λŠ” 파이썬 2.7 λ‚΄ μ—¬λŸ¬ κ³³μ—μ„œ λ„μž…λ˜λŠ” 암묡적 κΈ°λ³Έ 코덱 λ³€ν™˜ κ²°κ³Ό λ•Œλ¬Έμ— λͺ…ν™•ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— κΆŒκ³ μ‚¬ν•­μ— ν¬ν•¨μ‹œν‚€μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ μ½”λ“œλŠ” ν•„μš”μ— 따라 `b''`, `u''` λ°”μ΄νŠΈλ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ‚¬μš©ν•˜κ³  μœ λ‹ˆμ½”λ“œ λ¬Έμžμ—΄ literalλ₯Ό μ‚¬μš©ν•˜λ©΄ 더 μ’‹μŠ΅λ‹ˆλ‹€.
51+
- μžμ„Έν•œ λ‚΄μš©μ€ [Python future statement definitions](https://docs.python.org/3/library/__future__.html) λ¬Έμ„œλ₯Ό μ½μ–΄λ³΄μ„Έμš”.
52+
- μ½”λ“œκ°€ μΆ©λΆ„νžˆ ν˜„λŒ€μ μΈ ν™˜κ²½μ—μ„œλ§Œ μ‚¬μš©λœλ‹€λŠ” 확신이 λ“€ λ•ŒκΉŒμ§€ μ΄λŸ¬ν•œ importλ₯Ό μ œκ±°ν•˜μ§€ λ§ˆμ„Έμš”.
53+
- ν˜„μž¬ μ½”λ“œμ—μ„œ νŠΉμ • ν–₯ν›„ importλ₯Ό 톡해 ν™œμ„±ν™”λ˜λŠ” κΈ°λŠ₯을 ν˜„μž¬ μ‚¬μš©ν•˜μ§€ μ•Šλ”λΌλ„ νŒŒμΌμ— ν•΄λ‹Ή κΈ°λŠ₯을 μœ μ§€ν•˜λ©΄ λ‚˜μ€‘μ— μ½”λ“œκ°€ 이전 λ™μž‘μ— 따라 μ‹€μˆ˜λ‘œ μˆ˜μ •λ˜λŠ” 것을 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
54+
- μ μ ˆν•˜λ‹€κ³  μƒκ°λ˜λŠ” λ‹€λ₯Έ `from __future__` import 문을 μ‚¬μš©ν•˜μ„Έμš”.
55+
- 2.7버전 내에 μ—¬λŸ¬ μœ„μΉ˜μ—μ„œ λ„μž…λœ μ•”μ‹œμ  κΈ°λ³Έ 코덱 λ³€ν™˜ 결과둜 인해 ν™•μ‹€ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— 2.7버전에 λŒ€ν•œ ꢌμž₯ 사항에 `unicode_literals`λ₯Ό ν¬ν•¨ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
56+
- λŒ€λΆ€λΆ„μ˜ 이쀑 버전 2-3 μ½”λ“œλŠ” ν•„μš”ν•œ 경우 `b''` 와 `u''` qλ°”νŠΈμ™€ μœ λ‹ˆμ½”λ“œ λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ„ λͺ…μ‹œμ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것이 더 λ‚˜μ•˜μŠ΅λ‹ˆλ‹€.
4357

4458
##### six, future 그리고 past 라이브러리
4559

46-
- ν”„λ‘œμ νŠΈκ°€ Python 2, 3 λͺ¨λ‘ μ§€μ›ν•΄μ•Όν•˜λŠ” κ²½μš°μ— 라이브러리λ₯Ό μ ν•©ν•˜κ²Œ μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€. μ½”λ“œλ₯Ό 더 κΉ¨λ—ν•˜κ³  삢을 더 μ‰½κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.
60+
- ν”„λ‘œμ νŠΈκ°€ μ—¬μ „νžˆ Python 2, 3 λͺ¨λ‘μ—μ„œ μ‚¬μš©μ„ μ§€μ›ν•΄μ•Όν•˜λŠ” 경우 μ ν•©ν•˜λ‹€κ³  νŒλ‹¨λ˜λŠ” λŒ€λ‘œ [six](https://pypi.org/project/six/), [future](https://pypi.org/project/future/), 및 [past](https://pypi.org/project/past/) 라이브러리λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.
61+
- μ½”λ“œλ₯Ό 더 κΉ¨λ—ν•˜κ³  삢을 더 μ‰½κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.

β€ŽGoogle Python Style Guide/2. Python μ–Έμ–΄ κ·œμΉ™/2.3 package.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
FLAGS = flags.FLAGS
4343
```
4444

45-
- λΆ€μ μ ˆν•œ 예 (이 νŒŒμΌμ€ `doctor/who/` 에 μžˆλ‹€κ³  κ°€μ •ν•˜κ³  `jodie.py`λ˜ν•œ μ‘΄μž¬ν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.)
45+
- λΆ€μ μ ˆν•œ 예 _(이 νŒŒμΌμ€ `doctor/who/` 에 μžˆλ‹€κ³  κ°€μ •ν•˜κ³  `jodie.py`λ˜ν•œ μ‘΄μž¬ν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.)_
4646

4747
```python
4848
# Unclear what module the author wanted and what will be imported. The actual

β€ŽGoogle Python Style Guide/2. Python μ–Έμ–΄ κ·œμΉ™/2.4 μ˜ˆμ™Έμ²˜λ¦¬.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979

8080
- λΌμ΄λΈŒλŸ¬λ¦¬λ‚˜ νŒ¨ν‚€μ§€λŠ” 고유의 μ˜ˆμ™Έκ°€ μ •μ˜λ˜μ–΄ μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.
8181
- μ‚¬μš©ν•˜λŠ” λ™μ•ˆ, 기쑴에 μ‘΄μž¬ν•˜λŠ” μ˜ˆμ™Έ 클래슀(exception class)λ‘œλΆ€ν„° 상속을 λ°›μ•„μ•Ό ν•©λ‹ˆλ‹€.
82-
- μ˜ˆμ™Έ 이름은 `Error`둜 λλ‚˜μ•Ό ν•˜κ³  말더듬이(stutter)둜 μ‹œμž‘ν•˜λ©΄ μ•ˆλ©λ‹ˆλ‹€.(`foo.fooError`).
82+
- μ˜ˆμ™Έ 이름은 `Error`둜 λλ‚˜μ•Ό ν•˜κ³  λ˜ν’€μ΄λ‘œ μ‹œμž‘ν•˜λ©΄ μ•ˆλ©λ‹ˆλ‹€.(`foo.fooError`).
8383
- μ˜ˆμ™Έλ₯Ό λ‹€μ‹œ λ°œμƒμ‹œν‚€κ±°λ‚˜ μ“°λ ˆλ“œμ˜ κ°€μž₯ λ°”κΉ₯ μͺ½ 블둝에 μžˆμ§€μ•ŠμœΌλ©΄ μ ˆλŒ€ 포괄적인 `except:`문을 μ‚¬μš©ν•˜κ±°λ‚˜ `Exception`, `StandardError`을 μ‚¬μš©ν•˜μ§€λ§ˆμ„Έμš”. (그리고 μ—λŸ¬λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜μ„Έμš”.) Python은 이와 κ΄€λ ¨ν•΄μ„œ 맀우 κ΄€μš©μ μ΄λ©° `except:` λͺ¨λ“  μ˜€νƒˆμžλ₯Ό λΉ„λ‘―ν•˜μ—¬, sys.exit() 호좜, Ctrl+C둜 μΈν•œ μΈν„°λŸ½νŠΈ, μœ λ‹›ν…ŒμŠ€νŠΈ μ‹€νŒ¨μ™€ λ§ˆμ§€λ§‰μœΌλ‘œ 당신이 포착을 μ›ν•˜μ§€ μ•Šμ•˜λ˜ λ‹€λ₯Έ λͺ¨λ“  μ’…λ₯˜μ˜ μ˜ˆμ™Έλ“€κΉŒμ§€ λͺ¨λ‘ μž‘μ•„λ‚Ό κ²ƒμž…λ‹ˆλ‹€.
8484
- μ½”λ“œμƒμ—μ„œ `try`/`except` λΈ”λ‘μ˜ 수λ₯Ό μ΅œμ†Œν™”μ‹œν‚€μ„Έμš”. `try`문의 λ‚΄λΆ€κ°€ 컀질수둝 μ˜ˆμ™ΈλŠ” 당신이 μ˜ˆμ™Έκ°€ λ°œμƒν• κ²ƒμ΄λΌ μ˜ˆμƒν•˜μ§€ μ•Šμ•˜λ˜ μ½”λ“œμ— μ˜ν•΄ 점점 더 λ°œμƒν•  κ²ƒμž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μƒν™©μ—μ„œ, `try`/`except` 블둝은 μ§„μ§œ κ²€μΆœν•΄μ•Ό ν•  μ—λŸ¬λ₯Ό κ°€λ¦¬κ²Œ λ©λ‹ˆλ‹€.
8585
- μ˜ˆμ™Έκ°€ `try` λΈ”λ‘μ—μ„œ λ°œμƒν•˜λ˜ μ•ˆν•˜λ˜ `finally`μ ˆμ€ μ½”λ“œλ₯Ό μ‹€ν–‰μ‹œν‚¨λ‹€. 이건 가끔 κΉ”λ”νžˆ ν•˜λŠ”λ° μœ μš©ν•©λ‹ˆλ‹€. 예λ₯Όλ“€μ–΄, νŒŒμΌμ„ 닫을 λ•Œ κ°€ κ·Έ μ˜ˆμž…λ‹ˆλ‹€.

0 commit comments

Comments
Β (0)