아래 글은 "Guide to Python"의 번역을 참고하여 정리하였습니다.
idiom: 관용구
A programming idiom, put simply, is a way to write code. The notion of programming idioms is discussed amply at c2 and at Stack Overflow.
자연스러운 파이썬 코드를 흔히 Pythonic스럽다고 말한다. 이를 위한 확실한 방법이 있지만, 파이썬 초보자들에게는 이상적인 파이썬 코드 작성법이 와닿지 않을 수도 있다. 그러니 좋은 이디엄들을 의식적으로 숙지해야 한다.
다음은 몇 가지 일반적인 파이썬 이디엄들이다.
리스트나 튜플의 길이를 알고 있다면, 언패킹을 하면서 각 엘리먼트마다 이름을 붙여줄 수 있다. 예를 들면 enumerate()
는 리스트 내부에 있는 각각의 아이템에 2개의 엘리먼트가 있는 튜플을 만들어준다.
for index, item in enumerate(some_list):
do something with index and item
이런 식으로 변수들을 스왑할 수도 있다.
a, b = b, a
중첩 언패킹도 됩니다:
a, (b, c) = 1, (2, 3)
파이썬3에서는 PEP 3132 에서 언패킹을 하는 새로운 방법이 소개되었다:
a, *rest = [1, 2, 3]
# a = 1, rest = [2, 3]
a, *middle, c = [1, 2, 3, 4]
# a = 1, middle = [2, 3], c = 4
사용하지 않을 변수를 만들고 무언가를 할당하는 경우 __
를 사용한다.
for __ in range(10)
print('*')
four_nones = [None] * 4
four_lists = [[] for __ in range(4)]
문자열을 만드는 일반적인 이디엄은 빈 문자열 변수에 str.join()
을 사용하는 것이다. 이것은 변수의 문자를 붙여준다. 이 이디엄은 리스트와 튜플에도 적용 가능하다.
letters = ['s', 'p', 'a', 'm']
word = ''.join(letters)
컬렉션에서 무언가를 찾아야 할 때, 두가지 옵션이 있다. List와 Set이다.
s = set(['s', 'p', 'a', 'm'])
l = ['s', 'p', 'a', 'm']
def lookup_set(s):
return 's' in s
def lookup_list(l):
return 's' in l
이러한 성능의 차이 때문에 다음과 같은 경우에는 리스트 대신 셋(set)이나 딕셔너리(dictionary)를 사용하는 편이 좋다:
크기가 작거나 검색을 자주 하지 않는 컬렉션의 경우에는 오히려 해시테이블을 만드는데 필요한 추가적인 시간과 메모리가 검색할 때 절약되는 시간에 비해 더 큰 경우도 많다.