가려질
수 있기 때문에 (우연히) 덮어써서 버그나 이상한 동작을 유발하기 쉽다.일반적인 데이터 구조에 대한 지식을 쌓기 위해 좋은 책을 찾고 있다면 스티븐 스키너(Steven S. Skiena)의 The Alogrithm Design Manual을 적극 권한다.
list: 가변 동적 배열
tuple: 불편 컨테이너
array.array: 기본적인 타입 지정 배열
str: 유니코드 문자의 불변 배열
bytes: 단일 바이트의 불변 배열
bytearray: 단일 바이트의 가변 배열
dict: 간단한 데이터 객체
tuple: 불변 객체 그룹
collections.namedtuple: 편리한 데이터 객체
typing.NamedTuple: 개선된 네임드튜플
struct.Struct: 직렬화된 C 구조체
types.SimpleNamespace: 세련된 속성 접근
이터레이터는 컨테이너의 내부 구조와 완전히 분리된 상태에서 컨테이너의 모든 항목을 처리할 수 있는 공통 인터페이스를 제공한다.
class Repeater: def __init__(self, value): self.value = value def __iter__(self): return self def __next__(self): return self.value
def repeater(value): while True: yield value
제너레이터 함수는 파이썬의 훌륭한 기능이므로 자신의 프로그램에서 제너레이터 함수를 사용하는 것을 주저해서는 안 된다.
요점 정리
제너레이터 표현식 때 리스트 내포식
listcomp = ['hello' for i in range(3)] genexpr = ('hello' for i in range(3))
EAFP (Easier to Ask for Forgiveness than Permission) - 허가보다는 용서를 구하는 것이 쉽다
def greeting(userid): try: return 'Hi %s!' % name_for_userid[userid] except KeyError: return 'Hi there'
def greeting(userid): return 'Hi %s!' % name_for_userid.get(userid, 'there')
요점 정리
dbader.org/newsletter