목차 소개
전문가를 위한 파이썬 프로그래밍 제4판
지은이: 미하우 야보르스키
10년 이상 다양한 프로그래밍 언어를 이용해 전문적으로 소프트웨어를 작성했다. 주로 웹 애플리케이션을 위한 고성능 분산 백엔드 서비스 코드를 만들었다. 소프트웨어 엔지니어에서 리드 소프트웨어 아키텍트까지 여러 기업에서 다양한 역할을 했다. 과거부터 지금까지 파이썬올 가장 선호한다.
지은이: 타레크 지아데
프랑스 부르고뉴에 거주하는 소프트웨어 엔지니어. 일래스틱 Elastic에서 개발자를 위한 도구를 만들고 있다. 이전에는 모질라에서 10여 년간 일했으며, 프랑스 파이썬 사용자 그룹인 AFPy를 설립했다. 다양한 잡지에 파이썬 관련 글을 기고했으며, 프랑스어와 영어로 여러 책을 집필했다. 국내에는 《파이썬 마이크로서비스》(에이콘출판사, 2019), 《파이썬 핵심 개발자들과의 인터뷰》(터닝포인트, 2019)로 소개된 바 있다.
이 책에 대하여
프로그래밍 교육을 위한 목적으로 처음 만들어져 지금에 이르기까지 파이썬은 ‘가독성과 생산성이높은 다중 패러다임 프로그래밍 언어 제공’
이라는 철학에 기반해 진화해왔습니다.
파이썬은 쉽습니다.
일반적인 문제 해결에만 초점을 둔다면 몇 시간 안에 그 목적을 충분히 달성할 수 있는 프로그램을 작성할 수 있습니다.
하지만 동시에 파이썬은 어렵습니다.
워낙 작성하기 쉽기 때문에, 반대로 가독성이 높고 재사용할 수 있으며 쉽게 유지보수할 수 있는 파이썬 코드를 작성하기는 쉽지 않습니다.
이 책은 파이썬에 입문하고자 하는 분들을 위한 책은 아닙니다.
일반적인 문제 해결을 넘어 파이썬이 추구하는 철학의 본질을 이해
하고, 그 철학에 기반한 ‘파이써닉'한 프로그램
을 작성하고자 하는 분들을 위한 책입니다.
파이썬의 본질
,파이썬과 다른 프로그래밍 언어의 차이점
,파이썬올 이용한 디자인 패턴 구현
,파이썬을 이용한 동시성 구현
,메타프로그래밍
,다른 프로그래밍 언어 코드와의 통합
,애플리케이션 관측성
등 이제까지 봤던 파이썬 서적에서는 볼 수 없었던 내용을 다루고 있습니다.
파이썬을 보다 파이썬답게 사용하고자 하는 분들에게 훌륭한 인사이트를 전해드릴 수 있을 것입니다.
이 책은 세 부분으로 나뉩니다.
도구에 관해 알기: 1~4장에서는 파이썬 프로그래머들이 이용하는
도구의 기본적인 요소들에 초점
을 맞춥니다.생산성 도구
현대적인 환경, 최신 파이썬 릴리스에서 도입된새로운 구문 요소
들을 살펴봅니다.
다른 프로그래밍 언어에 경험이 있는 프로그래머들과 보다파이썬 고급 기능
에 관해 좀 더 학습하기 원하는 프로그래머들의 안전한 착륙을 돕습니다.파이썬을 이용한 애플리케이션 구축: 5~9장에서는
디자인 패턴, 프로그래밍 패러다임, 메타프로그래밍
기법에 관해 살펴봅니다.
규모는 작지만 유용한 프로그램을 만들어보고,애플리케이션 아키텍처
를 깊이 살펴보게 됩니다.
또한파이썬 이외의 프로그래밍 언어로 작성된 코드를 파이썬에 통합
하는 방법을 배우게 됩니다.파이썬 애플리케이션 유지보수: 10~13장에서는 애플리케이션이
‘출시'된 후 일반적으로 발생하는 모든 사항
에 관해 살펴봅니다.애플리케이션을 쉽게 유지보수하는 데 도움이 되는 도구와 기법
들을 살펴봅니다.
그리고패키징, 배포, 모니터링, 성능 최적화
와 관련된 일반적인 문제들에 대한 접근 방법들도 살펴봅니다.
1. 파이썬의 현재
1장에서는 파이썬 언어와 파이썬 커뮤니티의 현재 상태에 관해 살펴본다.
파이썬의 지속적인 변경과그 이유에 관해 알아본다.
오래된 파이썬 코드를 다루기 위해 해야 할 것들, 그리고 파이썬 커뮤니티에서 현재 일어나고 있는 일들을 따라잡기 위해 해야 할 일들은 무엇인지 알아본다.
- 파이썬의 현재와 진행 상황
- 파이썬 2의 현재와 미래
- 최신 정보의 확인과 습득
- 요약
2. 모던 파이썬 개발 환경
2장에서는 파이썬 프로그래머들을 위한 반복적이고도 지속적인 환경을 만들기 위한 현대적인 방법들을 설명한다.
애플리케이션 레벨 및 시스템 레벨 격리의 차이점에 관해 설명한다.
환경 격리를 지원하는 잘 알려진 두 가지 방법인 가상 환경 및 도커 컨테이너와 함께, 다른 대안에 관해서도 살펴본다.
2장 후반부에서는 개발 과정에서 활용할 수 있는 일반적인 생산성 도구에 관해서도 살펴본다.
- 기술적 요구 사항
- 파이썬 패키징 생태계
- 런타임 환경 격리
- 애플리케이션 레벨 환경 격리
- 시스템 레벨 환경 격리
- 유명한 생산성 도구들
- 요약
3. 파이썬의 새로운 기능
3장에서는 최근 파이썬 릴리스에 포함된 점들을 살펴본다. 최근 파이썬 릴리스들에 반영된 파이썬 구문의 가장 중요한 변경점을 살펴본다.
그리고 다음 메이저 파이썬 릴리스 3.10(집필 시점 기준)에 예 정된 홍미로운 변화에 관해 살펴본다.
- 기술 요구 사항
- 최근의 언어 추가 사항
- 그다지 새롭지는 않지만 여전히 멋진 요소들
- 미래에 관한 예상
- 요약
4. 파이썬과 다른 언어와의 비교
4장에서는 파이썬과 다른 언어들을 비교한다. 프로그래밍 이디엄programm ing idiom이 무엇인지, 이들 이 코드에서 어떻게 인식되는지 알아본다.
파이썬의 객체 지향 프로그래밍 모델의 핵심 요소에 관해살펴보고, 그 모델이 다른 유명한 객체 지향 프로그래밍들과 어떻게 다른지 알아본다.
이와 함께 디 스크립터, 데커레이터, 데어터 클래스 같은 유명한 프로그래밍 언어 피처에 관해서도 살펴본다.
다른 언어를 사용해본 프로그래머들은 이 장의 내용을 통해 파이썬 생태계에 안전하게 정착할 수 있을 것 이다.
- 기술적 요구 사항
- 클래스 모델과 객체 지향 프로그래밍
- 동적 다형성
- 데이터 클래스
- 함수형 프로그래밍
5. 인터페이스, 패턴, 모듈성
5장에서는 재사용할 수 있는 다양한 디자인 패턴을 구현하는 데 쓰이는 파이썬의 요소에 관해 논의 한다.
클래스 인터페이스, 그리고 파이썬을 이용해 이들을 구현하는 방법에 관해 살펴본다.
또한 통제의 전환 nversion of control 과 디펜던시 주입dependency injection에 관해 살펴본다. 이 두 가지는 매우 유용하지만, 꼭 널리 알려진 프로그래밍 기법은 아니다.
- 기술적 요구 사항
- 인터페이스
- 제어 반전과 디펜던시 주입
- 요약
6. 동시성
6장에서는 다양한 접근 방식과 라이브러리를 이용해 파이썬에서 동시성concurrency올 구현하는 방법 올 설명한다.
파이썬은 멀티스레딩, 멀티프로세싱, 비동기 프로그래밍의 세 가지 동시성 모델을 지원 한다. 이 모델들의 핵심적인 차이점과 이들을 효과적으로 이용하는 방법을 살펴본다.
- 기술적 요구 사항
- 동시성이란 무엇인가?
- 멀티스레딩
- 멀티프로세싱
- 비동기 프로그래밍
- 요약
7. 이벤트 주도 프로그래밍
7장에서는 이벤트 주도 프로그래밍과 이것이 비동기 프로그래밍 및 다른 동시성 모델과 어떻게 관련 되어 있는지 살펴본다.
여러 유용한 라이브러리들과 함께 이벤트 주도 프로그래밍에 대한 다양한 접 근방식들을확인한다.
- 기술적 요구 사항
- 이벤트 주도 프로그래밍이란 무엇인가?
- 이벤트 주도 프로그래밍의 다양한 스타일
- 이벤트 주도 아키텍쳐
- 요약
8. 메타프로그래밍 요소들
8장에서는 파이썬에서 이용할 수 있는 메타프로그래밍에 관한 일반적인 접근 방식에 관해 살펴본다.
이 장에서는 데커레이터, 메타클래스, 코드 생성 패턴과 같은 일반적인 메타프로그래밍 기법들에 관해학습한다.
- 기술적 요구 사항
- 메타프로그래밍이란 무엇인가?
- 데커레이터를 이용해 함수의 행동을 사용 전 수정하기
- 클래스 인스턴스 생성 프로세스 가로채기
- 메타클래스
- 코드 생성
- 요약
9. 파이썬에 C와 C++ 연결하기
9장에서는 다른 프로그래밍 언어로 작성된 코드를 파이썬 애플리케이션에 통합하는 방법을 살펴본다.
C 확장 기능을 언제 사용하는 것이 효과적인지, 또 이들을 어떻게 생성하는지 살펴본다.
- 기술적 요구 사항
- 파이썬 확장 기능의 핵심인 C/C++
- 파이썬 C 확장 기능 컴파일 및 로딩
- 확장 기능 이용의 필요성
- 확장 기능 작성
- 확장 기능 사용의 단점
- 확장 기능 없이 다이내믹 라이브러리와 인터페이싱하기
- 요약
10. 테스팅과 품질 자동화
10장에서는 자동화된 테스팅과 품질 프로세스에 관해 살펴본다. 이 장에서는 널리 알려진 테스팅 프레임워크인 pytest를 포함한 여러 유용한 테스팅 기법에 관해 살펴본다.
완전히 자동화된 방식으로 코드 품질 지표를 측정하고 코드 스타일을 개선할 수 있는 도구들에 관해 살펴본다.
- 기술적 요구 사항
- 테스트 주도 개발 원칙
- pytest를 이용해 테스트 작성하기
- 품질 자동화
- 돌연변이 테스팅
- 유용한 테스팅 유틸리티
- 요약
11. 파이썬 코드 패키징과 배포
11장에서는 파이썬 패키징 기술의 현재 상태와 파이썬 패키지 인덱스Python Package Index, PyPI에서 오픈소스 코드로 배포할 수 있는 패키지를 생성하는 베스트 프랙티스에 관해 살펴본다.
웹 개발용 애플리케이션 패키징과 데스크톱 애플리케이션용 스탠드얼론 파이썬 실행 파일을 생성하는 방법에 관해살펴본다.
- 기술적 요구 사항
- 라이브러리 패키징 및 배포
- 웹용 애플리케이션 및 서비스 패키징
- 스탠드얼론 실행 파일 생성
- 요약
12. 애플리케이션 동작과 성능 관측
12장에서는 애플리케이션 관측성application observability에 관해 살펴본다.
파이썬 로깅 시스템, 애플 리케이션 지표를 모니터링하고 분산 트랜잭션 트레이싱을 수행하는 방법에 관해 살펴본다.
이와 함께 간단한 관측성 프랙티스를 대규모의 분산 시스템으로 확장하는 방법을 배운다.
- 기술적 요구 사항
- 에러와 로그 캡쳐
- 코드와 커스텀 지표 조사
- 분산 애플리케이션 트레이싱
- 요약
13. 코드 최적화
13장에서는 모든 개발자가 알아야 할 최적화의 기본 규칙들을 살펴본다.
애플리케이션 성능 병목을 식별하는 방법과 일반적인 프로파일링 도구의 사용 방법에 관해 살펴본다.
병목을 식별한 뒤 여러 상 황에서 쉽게 적용할 수 있는 널리 이용되는 최적화 기법 및 전략에 관해 살펴본다.
- 기술적 요구 사항
- 나쁜 성능을 발생시키는 일반적인 요소들
- 코드 프로파일링
- 적절한 데이터 구조를 선택하여 복잡도 줄이기
- 아키텍처 트레이드오프 활용하기
- 요약
출처 - 미하우, 타레크 『전문가를 위한 파이썬 프로그래밍 제4판』, 김모세 옮김, Jpub(2022), p4-p24.
본 콘텐츠는 출처에 표기된 도서의 일부분을 요약한 내용입니다. 상세한 내용은 도서를 확인하는 것이 좋습니다.