파이썬의 잠재력을 끌어올리는 프로그래밍 기법
초보자들이 놓치기 쉬운 파이썬 기능을 활용하여, 효율적인 파이썬 코드 작성 방법을 제시하는 실용 안내서다. 특히 다른 언어에서는 찾아볼 수 없는 파이썬 고유의 기능을 중점적으로 살펴본다. 파이썬의 핵심 요소 및 주요 기본 라이브러리도 기본에 충실하게 소개한다. 이 책으로 더욱 간결하고, 읽기 좋고, 빠른 코드를 작성하는 방법을 터득할 수 있을 것이다.
[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 : 파이썬 용어
‘파이썬을 파이썬스럽게’ 코딩하자!
효율적인 코드 작성법을 통해 파이썬 고급 개발자의 길로 안내하는 최고의 지침서
많은 프로그래밍 경험자가 다른 언어에서 배운 패턴에 파이썬을 끼워 맞추면서, 자신이 미처 경험하지 못한 파이썬 고유의 기능을 찾아내려는 노력에는 인색하다. 즉, 이전에 배운 다른 언어의 관습에 따라 파이썬 코드를 작성한다. 이런 사람들은 이 책에서 더 효율적이고 능숙하게 파이썬 코드를 활용하는 방법을 배울 수 있다.
파이썬의 ‘특별한 메서드’를 이해하고, 함수를 일급 객체로 다루는 파이썬의 철학이 주요 디자인 패턴에 미치는 영향을 살펴본다. 또한 순차적 제어 흐름을 뛰어넘는 파이썬의 기능과 라이브러리를 익히고, 동적 속성을 가지는 클래스 생성 기법을 배운다. 특히 파이썬 2를 알지만 3.x 버전으로 옮겨가려는 실무 개발자들에게 도움이 될 것이다.
책의 주요 내용
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2021-12-20 | 다운로드 |
박상현