Home [Effective Python] 모아보기
Post
Cancel

[Effective Python] 모아보기

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”을 읽고 정리한 내용입니다.


어렵거나 생소한 내용은 ✅ 표시를 해두었다. 반복해서 읽고 체화해나가자!!


Chapter 01. Pythonic Thinking

#TitlePost 
1사용 중인 파이썬의 버전을 알아두라LINK 
2PEP 8 스타일 가이드를 따르라LINK 
3bytesstr의 차이를 알아두라LINK
4C 스타일 형식 문자열을 str.format과 쓰기보다는 f-문자열을 통한 인터폴레이션을 사용하라LINK 
5복잡한 식을 쓰는 대신 도우미 함수를 작성하라LINK 
6인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹하라LINK 
7range 보다는 enumerate를 사용하라LINK 
8여러 이터레이터에 대해 나란히 루프를 수행하려면 zip을 사용하라LINK 
9forwhile 루프 뒤에 else 블록을 사용하지 말라LINK
10대입식을 사용해 반복을 피하라LINK


Chapter 02. Lists and Dictionaries

#TitlePost 
-파이썬의 딕셔너리(dict) 타입LINK 
11시퀀스를 슬라이싱하는 방법을 익혀라LINK 
12스트라이드와 슬라이스를 한 식에 함께 사용하지 말라LINK 
13슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용하라LINK
14복잡한 기준을 사용해 정렬할 때는 key 파라미터를 사용하라LINK
15딕셔너리 삽입 순서에 의존할 때는 조심하라LINK 
16in을 사용하고 딕셔너리 키가 없을 때 KeyError를 처리하기보다는 get을 사용하라LINK
17내부 상태에서 원소가 없는 경우를 처리할 때는 setdefault 보다 defaultdict를 사용하라LINK
18__missing__을 사용해 키에 따라 다른 디폴트 값을 생성하는 방법을 알아두라LINK


Chapter 03. Functions

#TitlePost 
19함수가 여러 값을 반환하는 경우 절대로 네 값 이상을 언패킹하지 말라LINK 
20None을 반환하기보다는 예외를 발생시켜라LINK
21변수 영역과 클로저의 상호작용 방식을 이해하라LINK
22가변 위치 인자를 사용해 시각적인 잡음을 줄여라LINK
23키워드 인자로 선택적인 기능을 제공하라LINK 
24None과 독스트링을 사용해 동적인 디폴트 인자를 지정하라LINK
25위치로만 인자를 지정하게 하거나 키워드로만 인자를 지정하게 해서 함수 호출을 명확하게 만들라LINK 
26functools.wraps을 사용해 함수 데코레이터를 정의하라LINK


Chapter 04. Comprehensions and Generators

#TitlePost 
27mapfilter 대신 컴프리헨션을 사용하라LINK 
28컴프리헨션 내부에 제어 하위 식을 세 개 이상 사용하지 말라LINK 
29대입식을 사용해 컴프리헨션 안에서 반복 작업을 피하라LINK 
30리스트를 반환하기보다는 제너레이터를 사용하라LINK
31인자에 대해 이터레이션할 때는 방어적이 돼라LINK
32긴 리스트 컴프리헨션보다는 제너레이터 식을 사용하라LINK
33yield from을 사용해 여러 제너레이터를 합성하라LINK 
34send로 제너레이터에 데이터를 주입하지 말라LINK
35제너레이터 안에서 throw로 상태를 변화시키지 말라LINK
36이터레이터나 제너레이터를 다룰 때는 itertools를 사용하라LINK


Chapter 05. Classes and Interfaces

#TitlePost 
37내장 타입을 여러 단계로 내포시키기보다는 클래스를 합성하라LINK
38간단한 인터페이스의 경우 클래스 대신 함수를 받아라LINK
39객체를 제너릭하게 구성하려면 @classmethod를 통한 다형성을 활용하라LINK
40super로 부모 클래스를 초기화하라 (+ MRO)LINK
41기능을 합성할 때는 믹스인 클래스를 사용하라LINK
42비공개 애트리뷰트보다는 공개 애트리뷰트를 사용하라LINK
43커스텀 컨테이너 타입은 collections.abc를 상속하라LINK 


Chapter 06. Metaclasses and Attributes

#TitlePost 
44세터와 게터 메서드 대신 평범한 애트리뷰트를 사용하라LINK
45애트리뷰트를 리팩터링하는 대신 @property를 사용하라LINK
46재사용 가능한 @property 메서드를 만들려면 디스크립터를 사용하라LINK
47지연 계산 애트리뷰트가 필요하면 __getattr__, __getattribute__, __setattr__
사용하라
LINK
48__init_subclass__를 사용해 하위 클래스를 검증하라LINK
49__init_subclass__를 사용해 클래스 확장을 등록하라LINK
50__set_name__으로 클래스 애트리뷰트를 표시하라LINK
51합성 가능한 클래스 확장이 필요하면 메타클래스보다는 클래스 데코레이터를 사용하라LINK


Chapter 07. Concurrency and Parallelism

#TitlePost 
52자식 프로세스를 관리하기 위해 subprocess를 사용하라LINK
53블로킹 I/O의 경우 스레드를 사용하고 병렬성을 피하라LINK
54스레드에서 데이터 경합을 피하기 위해 Lock을 사용하라LINK
This post is licensed under CC BY 4.0 by the author.

[Better Way #54] 스레드에서 데이터 경합을 피하기 위해 Lock을 사용하라

[OOP] DI(Dependency Injection, 의존성 주입)