책소개
파이썬의 잠재력을 끌어올리는 프로그래밍 기법
초보자들이 놓치기 쉬운 파이썬 기능을 활용하여, 효율적인 파이썬 코드 작성 방법을 제시하는 실용 안내서다. 특히 다른 언어에서는 찾아볼 수 없는 파이썬 고유의 기능을 중점적으로 살펴본다. 파이썬의 핵심 요소 및 주요 기본 라이브러리도 기본에 충실하게 소개한다. 이 책으로 더욱 간결하고, 읽기 좋고, 빠른 코드를 작성하는 방법을 터득할 수 있을 것이다.
목차
[1부_ 들어가며]
1장. 파이썬 데이터 모델
__1.1 파이썬으로 만든 카드 한 벌
__1.2 특별 메서드는 어떻게 사용되나?
__1.3 특별 메서드 개요
__1.4 왜 len()은 메서드가 아닐까?
__1.5 요약
__1.6 읽을거리
[2부_ 데이터 구조체]
2장. 시퀀스의 배열
__2.1 내장 시퀀스 개요
__2.2 지능 리스트와 제너레이터 표현식
__2.3 튜플은 단순한 불변 리스트가 아니다
__2.4 슬라이싱
__2.5 시퀀스에 덧셈과 곱셈 연산자 사용하기
__2.6 시퀀스의 복합 할당
__2.7 list.sort()와 sorted() 내장 함수
__2.8 정렬된 시퀀스를 bisect로 관리하기
__2.9 리스트가 답이 아닐 때
__2.10 요약
__2.11 읽을거리
3장. 딕셔너리와 집합
__3.1 일반적인 매핑형
__3.2 지능형 딕셔너리
__3.3 공통적인 매핑 메서드
__3.4 융통성 있게 키를 조회하는 매핑
__3.5 그 외 매핑형
__3.6 UserDict 상속하기
__3.7 불변 매핑
__3.8 집합 이론
__3.9 dict와 set의 내부 구조
__3.10 요약
__3.11 읽을거리
4장. 텍스트와 바이트
__4.1 문자 문제
__4.2 바이트에 대한 기본 지식
__4.3 기본 인코더/ 디코더
__4.4 인코딩/ 디코딩 문제 이해하기
__4.5 텍스트 파일 다루기
__4.6 제대로 비교하기 위해 유니코드 정규화하기
__4.7 유니코드 텍스트 정렬하기
__4.8 유니코드 데이터베이스
__4.9 이중 모드 str 및 bytes API
__4.10 요약
__4.11 읽을거리
[3부_ 객체로서의 함수]
5장. 일급 함수
__5.1 함수를 객체처럼 다루기
__5.2 고위 함수
__5.3 익명 함수
__5.4 일곱 가지 맛의 콜러블 객체
__5.5 사용자 정의 콜러블형
__5.6 함수 내부 조사
__5.7 위치 매개변수에서 키워드 전용 매개변수까지
__5.8 매개변수에 대한 정보 읽기
__5.9 함수 애너테이션
__5.10 함수형 프로그래밍을 위한 패키지
__5.11 요약
__5.12 읽을거리
6장. 일급 함수를 이용한 디자인 패턴
__6.1 사례 : 전략 패턴의 리팩토링
__6.2 명령
__6.3 요약
__6.4 읽을거리
7장. 함수 데커레이터와 클로저
__7.1 데커레이터 기본 지식
__7.2 파이썬이 데커레이터를 실행하는 시점
__7.3 데커레이터로 개선한 전략 패턴
__7.4 변수 범위 규칙
__7.5 클로저
__7.6 nonlocal 선언
__7.7 간단한 데커레이터 구현하기
__7.8 표준 라이브러리에서 제공하는 데커레이터
__7.9 누적된 데커레이터
__7.10 매개변수화된 데커레이터
__7.11 요약
__7.12 읽을거리
[4부_ 객체지향 관용구]
8장. 객체 참조, 가변성, 재활용
__8.1 변수는 상자가 아니다
__8.2 정체성, 동질성, 별명
__8.3 기본 복사는 얕은 복사
__8.4 참조로서의 함수 매개변수
__8.5 del과 가비지 컬렉션
__8.6 약한 참조
__8.7 파이썬의 특이한 불변형 처리법
__8.8 요약
__8.9 읽을거리
9장. 파이썬스러운 객체
__9.1 객체 표현
__9.2 벡터 클래스의 부활
__9.3 대안 생성자
__9.4 @classmethod와 @staticmethod
__9.5 포맷된 출력
__9.6 해시 가능한 Vector2d
__9.7 파이썬에서의 비공개 속성과 보호된 속성
__9.8 _slots_ 클래스 속성으로 공간 절약하기
__9.9 클래스 속성 오버라이드
__9.10 요약
__9.11 읽을거리
10장. 시퀀스 해킹, 해시, 슬라이스
__10.1 Vector : 사용자 정의 시퀀스형
__10.2 Vector 버전 #1 : Vector2d 호환
__10.3 프로토콜과 덕 타이핑
__10.4 Vector 버전 #2 : 슬라이스 가능한 시퀀스
__10.5 Vector 버전 #3 : 동적 속성 접근
__10.6 Vector 버전 #4 : 해시와 더 빠른 ==
__10.7 Vector 버전 #5 : 포매팅
__10.8 요약
__10.9 읽을거리
11장. 프로토콜에서 추상 베이스 클래스까지
__11.1 파이썬 문화에서의 인터페이스와 프로토콜
__11.2 파이썬은 시퀀스를 찾아낸다
__11.3 런타임에 프로토콜을 구현하는 멍키 패칭
__11.4 알렉스 마르텔리의 물새
__11.5 ABC 상속하기
__11.6 표준 라이브러리의 ABC
__11.7 ABC의 정의와 사용
__11.8 Tombola 서브클래스 테스트 방법
__11.9 register()의 실제 용법
__11.10 오리처럼 행동할 수 있는 거위
__11.11 요약
__11.12 읽을거리
12장. 좋거나 나쁘거나
__12.1 내장 자료형의 상속은 까다롭다
__12.2 다중 상속과 메서드 결정 순서
__12.3 실세계에서의 다중 상속
__12.4 다중 상속 다루기
__12.5 최신 사례 : 장고 제네릭 뷰의 믹스인
__12.6 요약
__12.7 읽을거리
13장. 연산자 오버로딩 : 제대로 하기
__13.1 연산자 오버로딩 기본 지식
__13.2 단항 연산자
__13.3 벡터를 더하기 위해 + 오버로딩하기
__13.4 벡터를 스칼라와 곱하기 위해 * 오버로딩하기
__13.5 향상된 비교 연산자
__13.6 복합 할당 연산자
__13.7 요약
__13.8 읽을거리
[5부_ 제어 흐름]
14장. 반복할 수 있는 객체, 반복자, 제너레이터
__14.1 Sentence 버전 #1: 단어 시퀀스
__14.2 반복형과 반복자
__14.3 Sentence 버전 #2: 고전적인 반복자
__14.4 Sentence 버전 #3: 제너레이터 함수
__14.5 Sentence 버전 #4: 느긋한 구현
__14.6 Sentence 버전 #5: 제너레이터 표현식
__14.7 제너레이터 표현식 : 언제 사용하나?
__14.8 또 다른 예제 : 등차수열 제너레이터
__14.9 표준 라이브러리의 제너레이터 함수
__14.10 파이썬 3.3의 새로운 구문 : yield from
__14.11 반복형을 리듀스하는 함수
__14.12 iter() 함수 들여다보기
__14.13 사례 연구 : 데이터베이스 변환 유틸리티 안의 제너레이터
__14.14 코루틴으로서의 제너레이터
__14.15 요약
__14.16 읽을거리
15장. 콘텍스트 관리자와 else 블록
__15.1 이것 다음에 저것 : if문 이외에서의 else 블록
__15.2 콘텍스트 관리자와 with 블록
__15.3 contextlib 유틸리티
__15.4 @contextmanager 사용하기
__15.5 요약
__15.6 읽을거리
16장. 코루틴
__16.1 코루틴은 제너레이터에서 어떻게 진화했는가?
__16.2 코루틴으로 사용되는 제너레이터의 기본 동작
__16.3 예제 : 이동평균을 계산하는 코루틴
__16.4 코루틴을 기동하기 위한 데커레이터
__16.5 코루틴 종료와 예외 처리
__16.6 코루틴에서 값 반환하기
__16.7 yield from 이용하기
__16.8 yield from의 의미
__16.9 사용 사례 : 이산 이벤트 시뮬레이션을 위한 코루틴
__16.10 요약
__16.11 읽을거리
17장. Futures를 이용한 동시성
__17.1 예제 : 세 가지 스타일의 웹 내려받기
__17.2 블로킹의 I/O와 GIL
__17.3 concurrent.futures로 프로세스 실행하기
__17.4 Executor.map() 실험
__17.5 진행 상황 출력하고 에러를 처리하며 내려받기
__17.6 요약
__17.7 읽을거리
18장. asyncio를 이용한 동시성
__18.1 스레드와 코루틴 비교
__18.2 asyncio와 aiohttp로 내려받기
__18.3 블로킹 호출을 에둘러 실행하기
__18.4 asyncio 내려받기 스크립트 개선
__18.5 콜백에서 Future와 코루틴으로
__18.6 asyncio 서버 작성
__18.7 요약
__18.8 읽을거리
[6부_ 메타프로그래밍]
19장. 동적 속성과 프로퍼티
__19.1 동적 속성을 이용한 데이터 랭글링
__19.2 속성을 검증하기 위해 프로퍼티 사용하기
__19.3 프로퍼티 제대로 알아보기
__19.4 프로퍼티 팩토리 구현하기
__19.5 속성 제거 처리하기
__19.6 속성을 처리하는 핵심 속성 및 함수
__19.7 요약
__19.8 읽을거리
20장. 속성 디스크립터
__20.1 디스크립터 예 : 속성 검증
__20.2 오버라이딩 디스크립터와 논오버라이딩 디스크립터
__20.3 메서드는 디스크립터
__20.4 디스크립터 사용에 대한 조언
__20.5 디스크립터의 문서화 문자열과 관리 대상 속성의 삭제
__20.6 요약
__20.7 읽을거리
21장. 클래스 메타프로그래밍
__21.1 클래스 팩토리
__21.2 디스크립터를 커스터마이즈하기 위한 클래스 데커레이터
__21.3 임포트 타임과 런타임
__21.4 메타클래스 기본 지식
__21.5 디스크립터를 커스터마이즈하기 위한 메타클래스
__21.6 메타클래스 __prepare__() 특별 메서드
__21.7 객체로서의 클래스
__21.8 요약
__21.9 읽을거리
부록 A : 지원 스크립트
부록 B : 파이썬 용어