[Python] 파이썬 코드 스타일

파이썬 코드는 읽기 쉽다. 대체로 코드가 간결하며, 엄격한 들여쓰기로 코드 블럭을 구분하기 쉽다.
이는 파이썬이 가독성을 염두에 두고 설계되었기 때문이다.

또한 파이썬이 읽기 쉬운 또 다른 이유는 “파이썬스러운” 이디엄(idiom)이다.
파이썬 가이드라인이 제안하는 가장 좋은 방법(가독성이 가장 좋은)을 따를 때 이를 “파이썬스럽다”고 표현한다.

일반적 개념

간단하고 명쾌하게

파이썬을 이용해서 복잡하고 긴 코드를 짤 수 있다. 하지만 같은 일을 하는 코드라면 짧고 간결하게 짜는 것이 낫다.

나쁜 예

def make_complex(*args):
    x, y = args
    return dict(**locals())

좋은 예

def make_complex(x, y):
    return {'x': x, 'y': y}
<The Hichhiker’s Guide to Python>에서 인용

좋은 예시 코드에서는 단 두 줄만 읽고 함수가 어떤 일을 할 수 있는 지 알 수 있지만 나쁜 예시 코드에서는 그렇지 않다.

한 줄에는 한 구문만

한 줄의 코드로 여러 명령을 수행할 수 있지만 이는 가독성을 해친다.

나쁜 예

if a == 0: a = 1
print a; print b;

좋은 예

if a == 0:
	a = 0

print a
print b

이디엄

이디엄(idiom)이란 코드를 작성하는 방법이다.
자연스럽고 간결한 파이썬 코드를 파이썬스럽다고 한다.

대부분의 경우에는 이를 위한 유일하고 명백한 방법이 있다.

다음은 몇 가지 일반적인 파이썬 이디엄들이다.

언패킹

리스트나 튜플을 쪼개어 각각의 원소에 이름을 붙여줄 수 있다.

예를 들어, 내장함수 enumerate()는 리스트의 각각의 원소를 (index, element)로 쪼개서 튜플을 만들어 반환한다.

for index, element in enumerate(list):
	# do something

리스트의 원소들을 각각의 변수에 할당할 수 있다.

a, b, c, d = [1, 2, 3, 4]

>>> a
1
>>> b
2

물론 튜플도 된다.

a, b, c, d = (1, 2, 3, 4)

>>> a
1
>>> b
2

변수를 서로 맞바꿀 수도 있다.

a, b = b, a

중첩 언패킹도 된다.

1, (2, 3) = a, (b, c)

사용하지 않을 변수 만들기

언패킹을 할 때, 튜플이나 리스트의 원소들에 대응되는 변수가 필요하다.
그런데 굳이 그 변수를 사용하지 않을 것이라면 __(언더스코어 두개)를 사용하면 된다.

first, __, third = [*first element*, *second element*, *third element*]

second element는 어딘가에 할당되기는 하지만 그 변수가 사용되지는 않는다.

파이썬3에서는 언패킹을 하는 새로운 방법이 추가되었다.

a, *rest = [1, 2, 3]

>>> a
1
>>> rest
[2, 3]
a, *middle, c = [1, 2, 3, 4]

>>> a
1
>>> middle
[2, 3]
>>> c
4

동일한 원소 N개 리스트 만들기

리스트에 * 연산자를 사용하면 된다.

list = [None] * 4

리스트로 문자열 만들기

굳이 반복문을 사용할 필요 없다.

letters = ['h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o' ,'r' ,'l' ,'d', '!']
string = ''.join(letters)

>>> string
"hello, world!"

컬렉션 안에서 아이템 찾기

list = ['f', 'i', 'n', 'd', 'm', 'e']

is_there = 'i' in list

>>> is_there
True

element in collection으로 검색하는 것은 모두 같지만 다음과 같은 경우에는
해시테이블을 이용하는 셋(set)이나 딕셔너리(dictionary)가 리스트보다 검색 속도가 훨씬 빠르다.

  • 컬렉션의 크기가 클 때
  • 컬렉션을 반복적으로 검색할 때
  • 컬렉션 안에 중복이 없을 때

파이썬 디자인 기본 원칙

PEP20으로도 알려진 파이썬 디자인의 기본 원칙이다.

import this
#=> try it

댓글