open:python-tricks-the-book

Python Tricks The Book

  • 클래스 변수는 모든 클래스 인스턴스에서 공유하는 데이터를 위한 변수다. 이 변수는 특정 인스턴스가 아닌 클래스에 속하며 클래스의 모든 인스턴스간에 공유된다.
  • 인스턴스 변수는 각 인스턴스에 고유한 데이터를 위한 것이다. 개별 객체 인스턴스에 속하며 클래스의 다른 인스턴스 간에 공유되지 않는다. 각 인스턴스 변수는 각 인스턴스에 배정된 고유한 저장소를 갖는다.
  • 클래스 변수는 동일한 이름의 인스턴스 변수에 의해 가려질 수 있기 때문에 (우연히) 덮어써서 버그나 이상한 동작을 유발하기 쉽다.

5장 파이썬의 일반 데이터 구조

일반적인 데이터 구조에 대한 지식을 쌓기 위해 좋은 책을 찾고 있다면 스티븐 스키너(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: 세련된 속성 접근

6장 반복과 이터레이션

이터레이터는 컨테이너의 내부 구조와 완전히 분리된 상태에서 컨테이너의 모든 항목을 처리할 수 있는 공통 인터페이스를 제공한다.

snippet.python
class Repeater:
  def __init__(self, value):
    self.value = value
 
  def __iter__(self):
    return self
 
  def __next__(self):
    return self.value
snippet.python
def repeater(value):
  while True:
    yield value

제너레이터 함수는 파이썬의 훌륭한 기능이므로 자신의 프로그램에서 제너레이터 함수를 사용하는 것을 주저해서는 안 된다.

요점 정리

  • 제너레이터 함수는 이터레이터 프로토콜을 지원하는 객체를 작성하기 위한 간편 문법이다. 제너레이터는 클래스 기반 이터레이터를 작성할 때 필요한 상용구 코드 대부분을 추상화한다.
  • yield 문을 사용하면 제너레이터 함수 실행을 일시적으로 중단하고 값을 되돌려 줄 수 있다.
  • 제어 흐름이 yield문 이외의 방법으로 제너레이터 함수를 떠나면 제너레이터는 StopIteration 예외를 발생시키기 시작한다.

제너레이터 표현식 때 리스트 내포식

snippet.python
listcomp = ['hello' for i in range(3)]
genexpr = ('hello' for i in range(3))

7장 딕셔너리 트릭

EAFP (Easier to Ask for Forgiveness than Permission) - 허가보다는 용서를 구하는 것이 쉽다

snippet.python
def greeting(userid):
  try:
    return 'Hi %s!' % name_for_userid[userid]
  except KeyError:
    return 'Hi there'
snippet.python
def greeting(userid):
  return 'Hi %s!' % name_for_userid.get(userid, 'there')

8장 파이썬다운 생산성 향상 기법

요점 정리

  • 내장된 dir() 함수를 사용하여 인터프리터 세션에서 파이썬 모듈과 클래스를 대화식으로 탐색할 수 있다.
  • help()가 내장되어 있어 인터프리터에서 바로 문서를 찾아볼 수 있다(q를 누르면 종료된다.)

dbader.org/newsletter


  • open/python-tricks-the-book.txt
  • 마지막으로 수정됨: 2020/06/02 09:25
  • 저자 127.0.0.1