책 소개
요약
웹과 인공지능 분야에서 파이썬의 활약이 대단하다. 파이썬의 수많은 기능에 앞서 이 책은 언어 자체의 가장 기본인 표준 라이브러리에 중점을 두고 있다. 표준 라이브러리는 한 권의 책에 모두 담을 수 없을 만큼 방대하기 때문에 반드시 필요한 내용만 담았다. 레퍼런스 수준으로 정리했으며 필요한 분야만 읽을 수 있도록 구성했다. 파이썬 초보자부터 고급 개발자 또는 취미 개발자도 책상 위 표준 라이브러리 참고서로 한 권 두면 어떨까 싶다.
추천의 글
"의욕 있는 프로그래머라면 주당 15분만 투자해보자. 더그 헬먼의 천재적인 접근 방법을 사용한 파이썬 표준 라이브러리를 배울 수 있다. 더그는 파이썬 배터리를 가득 충전할 수 있도록 친절한 설명을 곁들여 독자를 이끌어 줄 것이다."
- 레이먼드 헤팅어(Raymond Hettinger), 파이썬 핵심 개발자
이 책에서 다루는 내용
■ string, textwrap, re(정규 표현식), difflib를 이용한 텍스트 다루기
■ 자료 구조 사용: 열거형, 컬렉션, 배열, heapq, 큐, struct, copy 등
■ functools와 itertools, contextlib를 이용한 매끄럽고 정확한 알고리즘 구현
■ 날짜/시간 및 고급 수학 작업 다루기
■ 데이터 저장과 압축
■ json과 dbm, sqlite를 포함하는 데이터 교환과 지속성 이해
■ 암호화를 사용한 메시지 사인과 검증
■ 프로세스와 스레드에 대한 동시성 작업 관리
■ 테스트와 디버그, 컴파일, 프로파일, 언어, 임포트, 패키지 도구
■ 인터프리터를 사용한 실시간 상호작용 또는 환경 조절
이 책의 대상 독자
중급 수준의 파이썬 프로그래머를 위해 구성됐다. 대부분의 소스코드는 검증을 거쳤고, 일부 코드의 경우에만 줄별로 설명한다.
모든 절은 각 모듈의 기능에 초점을 맞추며, 소스코드와 결과를 통해 완벽한 독립 예제 프로그램으로 설명된다. 각 기능은 최대한 간략하게 작성돼 독자는 여타 지원 코드에 집중력이 흐트러지는 일 없이 모듈이나 함수에 집중할 수 있을 것이다.
다른 언어에 경험이 많은 프로그래머도 이 책을 통해 파이썬을 배울 수 있지만, 파이썬 언어를 소개하고자 기획하지는 않았다. 파이썬 프로그래밍을 코딩해본 경험이 조금 있다면 예제를 공부할 때 유용할 것이다. 일부 절에서는 네트워크 소켓 프로그래밍이나 hmac 암호화 같은 특정 도메인 지식을 요구할 것이다.
예제를 설명하는 기본 정보는 책 속에 있지만 표준 라이브러리에 있는 모듈이 담당하는 주제의 범위를 모두 다루기에는 한 권의 책으로 불가능하다. 각 모듈의 말미에는 추가 정보와 읽을거리에 대한 추천 참고 목록이 있고, 온라인 리소스와 RFC 표준 문서, 관련 서적을 포함한다.
이 책의 구성
이 책은 종합 레퍼런스 가이드(http://docs.python.org 참고)를 보완하며, 가이드에 기술된 기능을 설명하고자 완전한 기능을 하는 예제 프로그램을 제공한다. 모듈을 모아 각 장을 구성해 참고하고자 하는 개별 모듈을 찾기 쉽게 했고, 주제별로 편하게 탐색할 수 있게 했다. 드물지만 처음부터 끝까지 이 책을 읽는 독자를 위해 완벽하지는 않지만 아직 다루지 않은 모듈의 경우 앞쪽 내용에서 참조할 일은 최소화시켰다.
목차
목차
- 1장 텍스트
- 1.1 string: 텍스트 상수와 템플릿
- 1.2 textwrap: 텍스트 문단 포매팅
- 1.3 re: 정규 표현식
- 1.4 difflib: 시퀀스 비교
- 2장 자료 구조
- 2.1 enum: 열거 타입
- 2.2 컬렉션: 컨테이너 데이터 타입
- 2.3 array: 연속된 고정 타입 자료
- 2.4 heapq: 힙 정렬 알고리즘
- 2.5 bisect: 리스트를 정렬된 상태로 유지
- 2.6 queue: 스레드 안전한 FIFO 구현
- 2.7 struct: 바이너리 자료 구조
- 2.8 weakref: 객체에 대한 임시 참조
- 2.9 copy: 객체 복사
- 2.10 pprint: 자료 구조를 보기 좋게 출력
- 3장 알고리즘
- 3.1 functools: 함수를 다루기 위한 도구
- 3.2 itertools: 반복자 함수
- 3.3 operator: 내장 연산자에 대한 함수형 인터페이스
- 3.4 contextlib: 콘텍스트 매니저 유틸리티
- 4장 날짜와 시간
- 4.1 time: 시간
- 4.2 datetime: 날짜와 시간 값 다루기
- 4.3 calendar: 날짜 관련 작업
- 5장 수학 계산
- 5.1 decimal: 고정, 부동소수점 계산
- 5.2 fractions: 유리수
- 5.3 random: 의사 난수 생성기
- 5.4 math: 수학 함수
- 5.5 statistics: 통계 연산
- 6장 파일 시스템
- 6.1 os.path: 플랫폼 독립적 파일명 관리
- 6.2 pathlib: 객체로서의 파일 시스템 경로
- 6.3 glob: 파일명 패턴 매칭
- 6.4 fnmatch: 유닉스 스타일 Glob 패턴 매칭
- 6.5 linecache: 텍스트 파일 효율적으로 읽기
- 6.6 tempfile: 임시 파일 시스템 객체
- 6.7 shutil: 고수준 파일 작업
- 6.8 filecmp: 파일 비교
- 6.9 mmap: 메모리 맵 파일
- 6.10 codecs: 문자열 인코딩과 디코딩
- 6.11 io: 텍스트와 바이너리, Raw 스트림 입출력 도구
- 7장 데이터 보존과 교환
- 7.1 pickle: 객체 직렬화
- 7.2 shelve: 객체 보존
- 7.3 dbm: 유닉스 키-값 데이터베이스
- 7.4 sqlite3: 임베디드 관계형 데이터베이스
- 7.5 xml.etree.ElementTree: XML 조작 API
- 7.6 csv: 쉼표로 구분한 값 파일
- 8장 데이터 압축과 보관
- 8.1 zlib: GNU zlib 압축
- 8.2 gzip: GNU zip 파일 읽고 쓰기
- 8.3 bz2: bzip2 압축
- 8.4 tarfile: Tar 아카이브 접근
- 8.5 zipfile: ZIP 아카이브 접근
- 9장 암호 기법
- 9.1 hashlib: 암호화 해싱
- 9.2 hmac: 암호 메시지 서명과 검증
- 10장 프로세스, 스레드, 코루틴을 통한 병렬 작업
- 10.1 subprocess: 추가 프로세스 생성
- 10.2 signal: 비동기 시스템 이벤트
- 10.3 threading: 프로세스 내에서 병렬 작업 관리
- 10.4 multiprocessing: 프로세스를 스레드처럼 관리
- 10.5 asyncio: 비동기적 I/O, 이벤트 루프, 병렬 작업 도구
- 10.6 concurrent.futures: 병렬 작업 풀 관리
- 11장 네트워킹
- 11.1 ipaddress: 인터넷 주소
- 11.2 socket: 네트워크 통신
- 11.3 selectors: I/O 멀티플랙싱 추상화
- 11.4 select: 효율적인 I/O 대기
- 11.5 socketserver: 네트워크 서버 생성
- 12장 인터넷
- 12.1 urllib.parse: URL을 컴포넌트로 나눔
- 12.2 urllib.request: 네트워크 리소스 액세스
- 12.3 urllib.robotparser: 인터넷 스파이더 접근 컨트롤
- 12.4 base64: 바이너리 데이터를 아스키로 인코드
- 12.5 http.server: 웹 서비스 구현을 위한 베이스 클래스
- 12.6 http.cookies: HTTP 쿠키
- 12.7 webbrowser: 웹 페이지 보여주기
- 12.8 uuid: 보편적인 고유 식별자
- 12.9 json: 자바스크립트 객체 표기법
- 12.10 xmlrpc.client: XML-RPC용 클라이언트 라이브러리
- 12.11 xmlrpc.server: XML-RPC 서버
- 13장 이메일
- 13.1 smtplib: 단순 메일 전송 프로토콜 클라이언트
- 13.2 smtpd: 메일 서버 구현
- 13.3 mailbox: 이메일 아카이브 관리
- 13.4 imaplib: IMAP4 클라이언트 라이브러리
- 14장 애플리케이션 빌딩 블록
- 14.1 argparse: 커맨드라인 옵션과 인자 파싱
- 14.2 getopt: 커맨드라인 옵션 파싱
- 14.3 readline: GNU readline 라이브러리
- 14.4 getpass: 보안 패스워드 프롬프트
- 14.5 cmd: 줄 단위 명령 프로세서
- 14.6 shlex: 셸 스타일 구문 파싱
- 14.7 configparser: 구성 파일 작업
- 14.8 logging: 상태, 에러, 정보 메시지 보고
- 14.9 fileinput: 커맨드라인 필터 프레임워크
- 14.10 atexit: 프로그램 종료 콜백
- 14.11 sched: 이벤트 스케줄러
- 15장 국제화와 지역화
- 15.1 gettext: 메시지 카탈로그
- 15.2 locale: 문화 지역화 API
- 16장 개발자 도구
- 16.1 pydoc: 모듈의 온라인 도움말
- 16.2 doctest: 문서를 통한 테스트
- 16.3 unittest: 자동화된 테스팅 프레임워크
- 16.4 trace: 프로그램의 흐름 추적
- 16.5 traceback: 예외와 스택 추적
- 16.6 cgitb: 상세한 트레이스백 보고서
- 16.7 pdb: 대화형 디버거
- 16.8 profile과 pstats: 성능 분석
- 16.9 timeit: 파이썬 코드의 실행 시간 측정
- 16.10 tabnanny: 들여쓰기 검증
- 16.11 compileall: 소스 파일 바이트 컴파일
- 16.12 pyclbr: 클래스 브라우저
- 16.13 venv: 가상 환경
- 16.14 ensurepip: 파이썬 패키지 인스톨러 설치
- 17장 런타임 기능
- 17.1 site: 사이트 구성
- 17.2 sys: 시스템 종속적인 구성
- 17.3 os: 운영체제 종속적인 기능의 액세스
- 17.4 platform: 시스템 버전 정보
- 17.5 resource: 시스템 리소스 관리
- 17.6 gc: 가비지 컬렉터
- 17.7 sysconfig: 인터프리터 컴파일 타임 구성
- 18장 언어 도구
- 18.1 warnings: 치명적이지 않은 경고
- 18.2 abc: 추상 베이스 클래스
- 18.3 dis: 파이썬 바이트코드 역어셈블러
- 18.4 inspect: 라이브 객체 검사
- 19장 모듈과 패키지
- 19.1 importlib: 파이썬의 임포트 메커니즘
- 19.2 pkgutil: 패키지 유틸리티
- 19.3 zipimport: ZIP 아카이브에서 파이썬 코드 로드
- 부록 A 포팅 노트
- A.1 참조
- A.2 새 모듈
- A.3 이름이 바뀐 모듈
- A.4 제거된 모듈
- A.5 더 이상 사용하지 않게 된 모듈
- A.6 모듈 변경 사항 요약
- 부록 B 표준 라이브러리 확장
- B.1 텍스트
- B.2 알고리즘
- B.3 날짜와 시간
- B.4 수학 함수
- B.5 데이터 영속성과 교환
- B.6 암호화
- B.7 프로세스와 스레드, 코루틴과 함께 하는 동시성
- B.8 인터넷
- B.9 이메일
- B.10 애플리케이션 빌딩 블록
- B.11 개발 도구
도서 오류 신고
정오표
정오표
[p.775 : 1~2행]
[p.790 : 5행]
*pp.789~790 코드 실행 시 발생하는 DeprecationWarning은 추후 버전업 시 명령어나 함수가 없어질 수 있다는 경고로, python 3.7/3.8에서 실행이 가능합니다. 아래 내용대로 해당 부분을 수정하면 경고 없이 실행하실 수 있습니다.
[p.789 : 아래에서 5행]
with await lock:
->
async with lock:
[p.790 : 1행]
await lock
->
await lock.acquire()