H | e | l | l | o | , | W | o | r | l | d | ! | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
-13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
>>> a = "Hello, world!" >>> pirnt(a[3]) l >>> print(a[-3]) r
들여쓰기(indentation)는 Tab 또는 공백(space) 4개를 사용하되, 혼용해서 사용하지 않는다. 하지만, 공백을 사용하는 것이 바람직하다.
한 줄에서 사용할 수 있는 문자의 최대 개수는 79개이다.
연산자가 사용된 문자열을 줄바꿈할 때, 연산자가 맨 앞에 오도록 줄바꿈한다.
income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest)
최상위 함수 및 클래스는 2줄을 띄우고,
클래스 내 메소드는 한줄을 띄운다.
class Cl1: pass # Blank Line # Blank Line class Cl2: def me1(self): pass # Blank Line def me2(self): pass
구문 내 불필요한 공백은 사용하지 않는다.
- 대괄호[]
와 소괄호()
양쪽 끝에 공백을 사용하지 않는다.
- ,
, :
, ;
앞에 공백을 사용하지 않는다.
# Correct: spam(ham[1], {eggs: 2}) # Wrong: spam( ham[ 1 ], { eggs: 2 } ) ############################ # Correct: foo = (0,) # Wrong: bar = (0, ) ############################ # Correct: if x == 4: print x, y; x, y = y, x # Wrong: if x == 4 : print x , y ; x , y = y , x ############################ # Correct: ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:] ham[lower:upper], ham[lower:upper:], ham[lower::step] ham[lower+offset : upper+offset] ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)] ham[lower + offset : upper + offset] # Wrong: ham[lower + offset:upper + offset] ham[1: 9], ham[1 :9], ham[1:9 :3] ham[lower : : upper] ham[ : upper] ############################ # Correct: i = i + 1 submitted += 1 x = x*2 - 1 hypot2 = x*x + y*y c = (a+b) * (a-b) # Wrong: i=i+1 submitted +=1 x = x * 2 - 1 hypot2 = x * x + y * y c = (a + b) * (a - b)
keyword argument와 default parameter value의 =
은 붙여 쓴다.
# Correct: def complex(real, imag=0.0): return magic(r=real, i=imag) # Wrong: def complex(real, imag = 0.0): return magic(r = real, i = imag)
Naming Conventions
class 명은 각 단어의 첫 글자를 대문자를 사용해 연결한다.(CapWords case convention)
class ThisIsClass: pass
함수명과 method명 그리고 변수명은 소문자로 작성하며 '_'(underscore)을 사용해 각 단어를 연결한다.(Snake case convention)
instance method의 첫 번째 인자는 항상 self를 사용한다.
instance class의 첫 번째 인자는 항상 cls를 사용한다.
Variable Naming Conventions
- _xxxx: 내부적으로 사용되는 변수를 의미한다.
- xxxx_: Keyword와의 충돌을 피하기위해서 사용한다.
- __xxx: Class Attribute로 사용한다.
- xx___: 사용자가 조정할 수 있는 namespace 내의 Attribute를 의미한다.
l
, O
, I
는 사용을 자제한다.Keyword는 파이썬에서 이미 예약되어있는 문자열을 나타내는 말로 변수명, 클래스명 등으로 사용할 수 없다.
>>> import keyword >>> print(keyword.kwlist) ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] >>> print(len(keyword.kwlist)) 35 # python 3.8 버전에서 keyword는 35개이다. 업데이트가 진행되면 변경될 수 있다.
Identifier(식별자)는 다른 것들과 구분하기 위해 사용하는 변수, 상수, 함수, 사용자 정의 타입의 '이름'을 의미한다.