Top

The Python 3 Standard Library by Example [예제로 배우는 파이썬 표준 라이브러리]

  • 원서명The Python 3 Standard Library by Example (ISBN 9780134291055)
  • 지은이더그 헬먼(Doug Hellmann)
  • 옮긴이권석기, 김우현
  • ISBN : 9791161754307
  • 58,000원
  • 2020년 06월 30일 펴냄
  • 페이퍼백 | 1,656쪽 | 188*235mm
  • 시리즈 : 프로그래밍 언어

책 소개

요약

웹과 인공지능 분야에서 파이썬의 활약이 대단하다. 파이썬의 수많은 기능에 앞서 이 책은 언어 자체의 가장 기본인 표준 라이브러리에 중점을 두고 있다. 표준 라이브러리는 한 권의 책에 모두 담을 수 없을 만큼 방대하기 때문에 반드시 필요한 내용만 담았다. 레퍼런스 수준으로 정리했으며 필요한 분야만 읽을 수 있도록 구성했다. 파이썬 초보자부터 고급 개발자 또는 취미 개발자도 책상 위 표준 라이브러리 참고서로 한 권 두면 어떨까 싶다.

추천의 글

"의욕 있는 프로그래머라면 주당 15분만 투자해보자. 더그 헬먼의 천재적인 접근 방법을 사용한 파이썬 표준 라이브러리를 배울 수 있다. 더그는 파이썬 배터리를 가득 충전할 수 있도록 친절한 설명을 곁들여 독자를 이끌어 줄 것이다."
- 레이먼드 헤팅어(Raymond Hettinger), 파이썬 핵심 개발자

이 책에서 다루는 내용

■ string, textwrap, re(정규 표현식), difflib를 이용한 텍스트 다루기
■ 자료 구조 사용: 열거형, 컬렉션, 배열, heapq, 큐, struct, copy 등
■ functools와 itertools, contextlib를 이용한 매끄럽고 정확한 알고리즘 구현
■ 날짜/시간 및 고급 수학 작업 다루기
■ 데이터 저장과 압축
■ json과 dbm, sqlite를 포함하는 데이터 교환과 지속성 이해
■ 암호화를 사용한 메시지 사인과 검증
■ 프로세스와 스레드에 대한 동시성 작업 관리
■ 테스트와 디버그, 컴파일, 프로파일, 언어, 임포트, 패키지 도구
■ 인터프리터를 사용한 실시간 상호작용 또는 환경 조절

이 책의 대상 독자

중급 수준의 파이썬 프로그래머를 위해 구성됐다. 대부분의 소스코드는 검증을 거쳤고, 일부 코드의 경우에만 줄별로 설명한다.
모든 절은 각 모듈의 기능에 초점을 맞추며, 소스코드와 결과를 통해 완벽한 독립 예제 프로그램으로 설명된다. 각 기능은 최대한 간략하게 작성돼 독자는 여타 지원 코드에 집중력이 흐트러지는 일 없이 모듈이나 함수에 집중할 수 있을 것이다.
다른 언어에 경험이 많은 프로그래머도 이 책을 통해 파이썬을 배울 수 있지만, 파이썬 언어를 소개하고자 기획하지는 않았다. 파이썬 프로그래밍을 코딩해본 경험이 조금 있다면 예제를 공부할 때 유용할 것이다. 일부 절에서는 네트워크 소켓 프로그래밍이나 hmac 암호화 같은 특정 도메인 지식을 요구할 것이다.
예제를 설명하는 기본 정보는 책 속에 있지만 표준 라이브러리에 있는 모듈이 담당하는 주제의 범위를 모두 다루기에는 한 권의 책으로 불가능하다. 각 모듈의 말미에는 추가 정보와 읽을거리에 대한 추천 참고 목록이 있고, 온라인 리소스와 RFC 표준 문서, 관련 서적을 포함한다.

이 책의 구성

이 책은 종합 레퍼런스 가이드(http://docs.python.org 참고)를 보완하며, 가이드에 기술된 기능을 설명하고자 완전한 기능을 하는 예제 프로그램을 제공한다. 모듈을 모아 각 장을 구성해 참고하고자 하는 개별 모듈을 찾기 쉽게 했고, 주제별로 편하게 탐색할 수 있게 했다. 드물지만 처음부터 끝까지 이 책을 읽는 독자를 위해 완벽하지는 않지만 아직 다루지 않은 모듈의 경우 앞쪽 내용에서 참조할 일은 최소화시켰다.

저자/역자 소개

지은이의 말

파이썬이 매번 배포될 때마다 표준 라이브러리는 운영체제, 인터프리터, 인터넷과 상호작용하는 도구를 제공하는 수백 종의 모듈을 포함한다. 모든 모듈은 테스트를 거쳤고 애플리케이션 개발을 바로 시작할 수 있도록 준비돼 있다. 이 책은 인기 있는 <이> 블로그 시리즈에서 발췌한 가장 널리 사용되는 모듈의 기능을 어떻게 사용하는지 보여주는 엄선된 예제를 제공한다.

지은이 소개

더그 헬먼(Doug Hellmann)

현재 레드햇(Red Hat) 소속이며 오픈스택 관련 일을 하고 있다. 오픈스택 기술 위원회와 프로젝트에 수많은 기여를 했다. 1.4 버전부터 파이썬 프로그래밍을 해왔고 수많은 유닉스와 비유닉스 플랫폼 경험이 있다. 각 프로젝트는 매핑, 의료 뉴스 출판, 은행, 데이터 센터 자동화 등을 다뤘다. 파이썬 소프트웨어 파운데이션의 멤버이며 2010년부터 2012년까지 커뮤니티 디렉터로 일했다. <파이썬>에서 몇 년간 정규 칼럼니스트로 일한 후 2008년에서 2009년까지 편집장을 역임했다.
2007부터 2011년 사이 자신의 블로그에 인기 있는 <이> 시리즈를 공개했으며, 이 책의 전판인 파이썬 2를 다룬 『The Python Standard Library by Example 한국어판』(에이콘, 2012)을 저술했다. 현재 조지아의 에덴스에 살고 있다.

옮긴이의 말

처음 이 책의 원서의 엄청난 페이지를 보고 놀랐던 기억이 난다. 하지만 그보다 근거 없는 도전 의식이 불타 올라 번역을 시작하게 됐다. ‘아무리 페이지 수가 많아도 파이썬인데 뭐?’라는 생각과 함께. 그런데 이 책을 번역하는 것보다 내가 직접 쓰는 게 더 좋지 않을까 하는 생각이 들 정도로 긴 여정이 되고 말았다. 그리고 이제는 파이썬 앞에서 겸손해졌다.
일부 시각에서 사실 파이썬은 언어 자체가 간결하지 못한 취미용 언어 정도로 치부된 측면도 있다. 하지만 이 책을 번역하면서 파이썬이 이렇게 방대한 표준 라이브러리를 품고 있었나 놀랐다. 과연 모든 라이브러리 사용법을 하나하나 아는 사람이 있을까 하는 의구심도 생겼다. 이런 레퍼런스류의 책을 비치하고 있지 않다면 매번 구글링을 해야 하지 않을까라는 생각도 들었다. 왜 구글과 같은 큰 기업을 필두로 빅데이터와 인공지능에서 파이썬이 맹활약을 할 수 있는지 어느 정도 이해가 됐다.

개인적으로 6장을 번역하면서 배운 점을 활용해 번역 자체 작업 시간을 줄여주는 스크립트를 작성했던 점이 참 재미있었다. 기존에는 일일이 텍스트를 번역해야 하는 수작업이었는데, 파이썬으로 번역 자동화 프로세스를 만들어 보는 재미를 느꼈고 작업 시간도 줄일 수 있었다. 책은 파이썬 3를 기본으로 다루고 있기 때문에 파이썬 2는 전혀 고려하지 않았다는 것을 양해 바란다.

파이썬 2가 없어질 것이라는 이야기가 나온 지 수 년이 지났지만 아직도 쓰이는 것을 보면 파이썬 3도 앞으로 10년 이상은 더 쓰이지 않을까라는 생각도 해본다. 파이썬은 매우 쉽다는 장점이 있다. 하지만 이것이 표준 라이브러리를 바로바로 사용할 수 있다는 뜻은 아니다. 라이브러리는 그 자체로 또 다시 배워야 하는 과정이 필요하다. 다만 독자 여러분께 드리고 싶은 말은 모든 내용을 읽어보고 기억하면서 공부할 책이 아니므로 겁먹을 필요는 없다는 것이다. 레퍼런스 책이기 때문에 필요한 부분만 빨리 찾아서 밑줄 그어가며 실무에 당장 적용해보면 된다. 본인이 필요한 부분만 하나씩 공부하다 보면 어느 날 모인 내용만 다시 정리해도 어마어마한 분량이 될 것이다. 파이썬의 기본 라이브러리에 대한 설명을 부족하게나마 무리 없이 옮겨 적었기를 바라며 독자들의 건투를 빈다.

권석기

옮긴이 소개

권석기

어린 시절 애플 2를 접한 이후로 S/W 엔지니어를 계속 해왔다. S/W 신기술, 음악, 예술, 만드는 것에 관심이 많다. 현재는 라인에서 소프트웨어 엔지니어 프리랜서로 활동 중이다. (https://eddiekwon.github.io)

김우현

대학생 시절 선배와 함께 창업한 후 20년 가까이 소프트웨어 개발자로 살아오다가 인공지능 분야에서 인생 후반기를 위한 새로운 길을 만들어가고 있다. 현재 숙명여자대학교 나노/바이오 전산화학 연구센터에서 데이터 과학자로 일하고 있다. 옮긴 책으로는 『R 데이터 구조와 알고리즘』(에이콘, 2017), 『자바 데이터 사이언스 쿡북』(에이콘, 2018), 『피처 엔지니어링, 제대로 시작하기』(에이콘, 2018) 등이 있다.

목차

목차
  • 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.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[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()