본문 바로가기

도서 소개

전문가를 위한 파이썬 프로그래밍(제4판)

베테랑에게 배우는 모던 파이썬 개발의 베스트 프랙티스와 인사이트

 

 

도서구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [인터파크]  [쿠팡

 

출판사 제이펍
저작권사 Packt Publishing
원서명 Expert Python Programming, 4th Edition (9781801071109)
도서명 전문가를 위한 파이썬 프로그래밍(제4판)
부제 애플리케이션 구축, 유지보수, 패키징, 배포 등 모던 파이썬 개발 마스터하기
지은이 미하우 야보르스키, 타레크 지아데
옮긴이 김모세
감수자 (없음)
시리즈 (없음)
출판일 2022. 08. 12
페이지 592쪽
판 형 46배판변형(188*245*29.0)
제 본 무선(soft cover)
정 가 38,000원
ISBN 979-11-92469-20-1 (93000)
키워드 파이썬, 유지보수, 패키징, 배포, 패턴매칭, 테스트, 메타프로그래밍, 동시성, 자료구조, 알고리즘
분 야 프로그래밍 언어 / 파이썬

 

관련 사이트

파이썬 공식 사이트


관련 사이트
아마존 도서 페이지
저작권사 도서 페이지

 

관련 포스트

2022.07.29 - [출간 전 책 소식] - 가장 깊은 곳까지 놀라운 파이썬 여행

 

관련 시리즈

 (없음)

 

관련 도서

실무에 바로 적용하는 파이썬 코드 레시피 302

 알 스웨이가트의 파이썬 프로젝트

 

관련 파일 다운로드 

https://github.com/moseskim/Expert-Python-Programming-Fourth-Edition/

 

교재 검토용 증정 안내
■ 학교 및 학원에서 교재 선정을 위해 책을 파일로 검토해보고자 하는 분들은 다음 페이지에서 신청 양식을 작성해주시기 바랍니다. 확인 후 연락을 드리겠습니다. https://goo.gl/vBtPo3

강의 보조 자료(교재로 채택하신 분들은 메일(textbook@jpub.kr)을 보내주시면 다음 자료를 보내드립니다.)
■ 본문의 그림과 표

 

■ 미리보기(지은이·옮긴이 소개, 기술 감수자 소개, 옮긴이 머리말, 베타리더 후기, 감사의 글, 이 책에 대하여, 1장, 2장 일부)

 

정오표 페이지
■ (등록되는 대로 링크를 걸어드리겠습니다)

 

도서구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [인터파크]  [쿠팡

 

도서 소개

베테랑에게 배우는 파이써닉한 애플리케이션 구축, 유지보수, 패키징 기법 

파이썬 코드를 작성하기는 쉽지만, 유지보수하기 좋은 환경을 갖추고 가독성 높은 코드를 만들기는 쉽지 않다. 이 책은 수년간 다양한 파이썬 애플리케이션을 구현한 전문 경험을 담아, 프로덕션 레벨에서 파이썬을 파이썬답게 쓰기 위해 알아야 할 모든 것을 망라한 지침서다. 전문 파이썬 프로그래머라면 꼭 알아야 할 애플리케이션 구축, 유지보수, 패키징, 배포 방법을 자세히 살펴보고, 베스트 프랙티스, 유용한 도구, 표준을 배울 수 있다. 

 

1~4장에서는 파이썬 프로그래머들이 이용하는 도구의 기본적인 요소들에 초점을 맞춘다. 생산성 도구, 현대적인 환경, 최신 파이썬 릴리스에서 도입된 새로운 구문 요소들을 살펴본다. 서로 다른 디펜던시들로 구성된 복잡한 환경을 세팅하는 우아한 방법부터 딕셔너리 병합, zoneinfo, 구조적 패턴 매칭 등 최신 파이썬 피처까지, 특히 다른 언어에서 파이썬으로 전향하는 개발자가 모던 파이썬 개발의 세계에 안착하는 데 도움을 준다. 

 

5~9장에서는 디자인 패턴, 프로그래밍 패러다임, 메타프로그래밍 기법에 관해 살펴본다. 작은 규모의 예제 프로그램을 구현해보고 애플리케이션 아키텍처에 대해서도 깊이 다룬다. 인터페이스, 동시성, 이벤트 주도 프로그래밍/아키텍처 등 현대 애플리케이션 구축에서 반드시 고려해야 하는 요소를 파이써닉하게 구현하는 방법을 배운다. 파이썬의 태생적 성능 한계를 극복하기 위해 C/C++ 코드를 파이썬에 통합하는 방법도 살펴본다. 

 

10~13장에서는 애플리케이션을 구축한 이후 쉽게 유지보수하는 데 도움이 되는 도구와 기법들을 살펴본다. 테스팅, 패키징 및 배포, 로깅 및 모니터링, 코드 최적화 등 개발 수명주기의 마지막 단계에 대해서도 다른 곳에서는 찾아보기 어려운 인사이트를 얻을 수 있다. 

 

베테랑 개발자가 엄선한 베스트 프랙티스, 유용한 도구, 표준을 익힘으로써 파이썬 전문가에 한 걸음 더 가까워질 수 있다. 모던 파이썬 개발의 가장 깊은 곳으로 뛰어들자. 

 

주요 내용

■ 반복 가능하고 일관된 파이썬 개발 환경을 세팅하는 최신 방법들 

■ 커뮤니티 및 프로덕션 사용을 위해 파이썬 코드를 효과적으로 패키징하는 법 

■ f-string, enum, lambda 함수 등 모던 파이썬 구문 학습 

■ 메타클래스를 이용해 복잡한 파이썬 메타프로그래밍 쉽게 익히기 

■ 파이썬 동시성 코드 작성 

■ C/C++ 코드와 파이썬 코드의 통합

 

 

지은이 소개

미하우 야보르스키(Michał Jaworski)

10년 이상 다양한 프로그래밍 언어를 이용해 전문적으로 소프트웨어를 작성했다. 주로 웹 애플리케이션을 위한 고성능 분산 백엔드 서비스 코드를 만들었다. 소프트웨어 엔지니어에서 리드 소프트웨어 아키텍트까지 여러 기업에서 다양한 역할을 했다. 과거부터 지금까지 파이썬을 가장 선호한다. 

국내에 번역된 책으로는 《파이썬을 이용한 머신러닝, 딥러닝 실전 개발 입문(개정판)》(2019), 《모던 자바스크립트 개발자를 위한 리액트 프로그래밍》(2017), 《러닝스쿨! 파이썬 교과서》(이상 위키북스, 2017), 《자바스크립트와 Node.js를 이용한 웹 크롤링 테크닉》(제이펍, 2016) 등이 있다.

타레크 지아데(Tarek Ziadé)

프랑스 부르고뉴에 거주하는 소프트웨어 엔지니어. 일래스틱Elastic에서 개발자를 위한 도구를 만들고 있다. 이전에는 모질라에서 10여 년간 일했으며, 프랑스 파이썬 사용자 그룹인 AFPy를 설립했다. 다양한 잡지에 파이썬 관련 글을 기고했으며, 프랑스어와 영어로 여러 책을 집필했다. 국내에는 《파이썬 마이크로서비스》(에이콘출판사, 2019), 《파이썬 핵심 개발자들과의 인터뷰》(터닝포인트, 2019)로 소개된 바 있다. 

 

 

옮긴이 소개

김모세

대학 졸업 후 소프트웨어 엔지니어, 소프트웨어 품질 엔지니어, 애자일 코치 등 다양한 부문에서 소프트웨어 개발에 참여했다. 재미있는 일, 나와 조직이 성장하고 성과를 내도록 돕는 일에 보람을 느끼며 나 자신에게 도전하고 더 나은 사람이 되기 위해 항상 노력하고 있다. 저서로 《코드 품질 시각화의 정석》(지앤선, 2015)이 있고, 옮긴 책으로는 《제대로 배우는 수학적 최적화》(한빛미디어, 2021), 《그림으로 배우는 TCP/IP》, 《파이썬 머신러닝 실무 테크닉 100》, 《라라벨 실전 웹 애플리케이션 개발》(이상 제이펍, 2021) 등이 있다.

 

 

차례

지은이·옮긴이 소개 xi

기술 감수자 소개 xii

옮긴이 머리말 xiii

베타리더 후기 xv

감사의 글 xvii

이 책에 대하여 xviii

 

CHAPTER 1 파이썬의 현재 1

1.1 파이썬의 현재와 진행 상황 2

1.2 파이썬 2의 현재와 미래 3

1.3 최신 정보의 확인과 습득 5

__1.3.1 PEP 문서 6

__1.3.2 활성화된 커뮤니티 8

__1.3.3 기타 자료들 10

1.4 요약 12

 

CHAPTER 2 모던 파이썬 개발 환경 13

2.1 기술적 요구 사항 14

2.2 파이썬 패키징 생태계 15

__2.2.1 pip를 이용한 파이썬 패키지 설치하기 15

2.3 런타임 환경 격리 17

__2.3.1 애플리케이션 레벨 격리 vs. 시스템 레벨 격리 20

2.4 애플리케이션 레벨 환경 격리 22

__2.4.1 포어트리: 디펜던시 관리 시스템 24

더보기

2.5 시스템 레벨 환경 격리 29

__2.5.1 컨테이너화 vs. 가상화 31

__2.5.2 도커를 이용한 가상 환경 33

__2.5.3 베이그런트를 이용한 가상 개발 환경 52

2.6 유명한 생산성 도구들 54

__2.6.1 커스텀 파이썬 셸 55

__2.6.2 IPython 이용하기 56

__2.6.3 커스텀 스크립트 및 프로그램과 셸 연동하기 59

__2.6.4 인터랙티브 디버거 60

__2.6.5 기타 생산성 향상 도구 62

2.7 요약 64

 

CHAPTER 3 파이썬의 새로운 기능 65

3.1 기술 요구 사항 66

3.2 최근의 언어 추가 사항 66

__3.2.1 딕셔너리 병합 및 업데이트 연산자 67

__3.2.2 할당 표현식 72

__3.2.3 타입 힌팅 제네릭 76

__3.2.4 위치 전달만 가능한 매개변수 78

__3.2.5 zoneinfo 모듈 81

__3.2.6 graphlib 모듈 82

3.3 그다지 새롭지는 않지만 여전히 멋진 요소들 86

__3.3.1 breakpoint() 함수 86

__3.3.2 개발 모드 88

__3.3.3 모듈 레벨 __getattr__() 및 __dir__() 함수 90

__3.3.4 f-string을 이용한 문자열 서식 지정 91

__3.3.5 숫자 리터럴의 언더스코어 93

__3.3.6 secrets 모듈 93

3.4 미래에 관한 예상 95

__3.4.1 | 연산자를 이용한 유니언 타입 95

__3.4.2 구조적 패턴 매칭 96

3.5 요약 101

 

CHAPTER 4 파이썬과 다른 언어와의 비교 103

4.1 기술적 요구 사항 104

4.2 클래스 모델과 객체 지향 프로그래밍 104

__4.2.1 슈퍼클래스로의 접근 105

__4.2.2 다중 상속과 메서드 결정 순서 107

__4.2.3 클래스 인스턴스 초기화 113

__4.2.4 속성 접근 패턴 117

__4.2.5 디스크립터 118

__4.2.6 프로퍼티 125

4.3 동적 다형성 131

__4.3.1 연산자 오버로딩 132

__4.3.2 함수 및 메서드 오버로딩 139

4.4 데이터 클래스 143

4.5 함수형 프로그래밍 147

__4.5.1 람다 함수 149

__4.5.2 map(), filter(), reduce() 함수 151

__4.5.3 부분 객체와 부분 함수 154

__4.5.4 제너레이터 155

__4.5.5 제너레이터 표현식 156

__4.5.6 데커레이터 157

4.6 열거형 159

4.7 요약 162

 

CHAPTER 5 인터페이스, 패턴, 모듈성 163

5.1 기술적 요구 사항 164

5.2 인터페이스 165

__5.2.1 간단한 역사: zope.interface 167

__5.2.2 함수 애너테이션과 추상 베이스 클래스 이용하기 175

__5.2.3 타입 애너테이션을 통한 인터페이스 181

5.3 제어 반전과 디펜던시 주입 184

__5.3.1 애플리케이션의 통제 반전 186

__5.3.2 디펜던시 주입 프레임워크 사용하기 194

5.4 요약 200

 

CHAPTER 6 동시성 201

6.1 기술적 요구 사항 202

6.2 동시성이란 무엇인가? 202

6.3 멀티스레딩 204

__6.3.1 멀티스레딩이란? 205

__6.3.2 파이썬의 스레드 처리 방식 209

__6.3.3 언제 멀티스레딩을 사용해야 하는가? 210

__6.3.4 멀티스레드 애플리케이션 예시 213

6.4 멀티프로세싱 230

__6.4.1 내장 multiprocessing 모듈 233

__6.4.2 프로세스 풀 이용하기 237

__6.4.3 multiprocessing.dummy를 멀티스레딩 인터페이스로 이용하기 239

6.5 비동기 프로그래밍 240

__6.5.1 협력적 멀티태스킹과 비동기 I/O 241

__6.5.2 파이썬의 async/await 키워드 242

__6.5.3 비동기 프로그래밍의 실질적 예 247

__6.5.4 비동기가 아닌 코드와 async/future 통합하기 250

6.6 요약 254

 

CHAPTER 7 이벤트 주도 프로그래밍 255

7.1 기술적 요구 사항 256

7.2 이벤트 주도 프로그래밍이란 무엇인가? 256

__7.2.1 이벤트 주도 != 비동기 257

__7.2.2 GUI에서의 이벤트 주도 프로그래밍 258

__7.2.3 이벤트 주도 통신 261

7.3 이벤트 주도 프로그래밍의 다양한 스타일 263

__7.3.1 콜백 기반 스타일 263

__7.3.2 주체 기반 스타일 265

__7.3.3 토픽 기반 스타일 270

7.4 이벤트 주도 아키텍처 272

__7.4.1 이벤트와 메시지 큐 273

7.5 요약 276

 

CHAPTER 8 메타프로그래밍 요소들 277

8.1 기술적 요구 사항 278

8.2 메타프로그래밍이란 무엇인가? 278

8.3 데커레이터를 이용해 함수의 행동을 사용 전 수정하기 279

__8.3.1 한 단계 더: 클래스 데커레이터 281

8.4 클래스 인스턴스 생성 프로세스 가로채기 286

8.5 메타클래스 289

__8.5.1 일반적인 구문 290

__8.5.2 메타클래스 사용 예시 293

__8.5.3 메타클래스의 함정 297

__8.5.4 메타클래스의 대안으로 __init_subclass__() 메서드 이용하기 298

8.6 코드 생성 300

__8.6.1 exec, eval, compile 301

__8.6.2 추상 구문 트리 302

__8.6.3 임포트 훅 304

__8.6.4 파이썬에서의 유명한 코드 생성 사례 304

8.7 요약 307

 

CHAPTER 9 파이썬에 C와 C++ 연결하기 309

9.1 기술적 요구 사항 311

9.2 파이썬 확장 기능의 핵심인 C/C++ 311

9.3 파이썬 C 확장 기능 컴파일 및 로딩 312

9.4 확장 기능 이용의 필요성 314

__9.4.1 크리티컬 코드 섹션의 성능 개선 315

__9.4.2 다른 언어로 작성된 기존 코드 통합 316

__9.4.3 서드파티 다이내믹 라이브러리 통합 316

__9.4.4 효율적인 커스텀 데이터 타입 생성 317

9.5 확장 기능 작성 317

__9.5.1 순수한 C 확장 기능 319

__9.5.2 Cython을 이용한 확장 기능 작성 337

9.6 확장 기능 사용의 단점 343

__9.6.1 추가적인 복잡성 344

__9.6.2 보다 어려운 디버깅 345

9.7 확장 기능 없이 다이내믹 라이브러리와 인터페이싱하기 345

__9.7.1 ctypes 모듈 346

__9.7.2 CFFI 353

9.8 요약 355

 

CHAPTER 10 테스팅과 품질 자동화 357

10.1 기술적 요구 사항 358

10.2 테스트 주도 개발 원칙 359

10.3 pytest를 이용해 테스트 작성하기 362

__10.3.1 테스트 매개변수화 369

__10.3.2 pytest의 픽스처 372

__10.3.3 페이크 이용하기 381

__10.3.4 목과 unittest.mock 모듈 385

10.4 품질 자동화 389

__10.4.1 테스트 커버리지 390

__10.4.2 스타일 픽서와 코드 린터 394

__10.4.3 정적 타입 분석 397

10.5 돌연변이 테스팅 399

10.6 유용한 테스팅 유틸리티 406

__10.6.1 실제적인 데이터값 조작하기 406

__10.6.2 시간값 조작하기 407

10.7 요약 409

 

CHAPTER 11 파이썬 코드 패키징과 배포 411

11.1 기술적 요구 사항 412

11.2 라이브러리 패키징 및 배포 412

__11.2.1 파이썬 패키지 구조 413

__11.2.2 패키지 배포 유형 422

__11.2.3 패키지 등록 및 공개 427

__11.2.4 패키지 버저닝과 디펜던시 관리 429

__11.2.5 커스텀 패키지 설치 433

__11.2.6 네임스페이스 패키지 435

__11.2.7 패키지 스크립트와 엔트리 포인트 437

11.3 웹용 애플리케이션 및 서비스 패키징 441

__11.3.1 12요소 앱 방법론 442

__11.3.2 도커 활용하기 444

__11.3.3 환경 변수 다루기 446

__11.3.4 애플리케이션 프레임워크에서 환경 변수의 역할 450

11.4 스탠드얼론 실행 파일 생성 454

__11.4.1 스탠드얼론 실행 파일이 유용한 경우 455

__11.4.2 널리 알려진 도구들 456

__11.4.3 실행 파일 패키지에서 파이썬 코드의 보안 464

11.5 요약 465

 

CHAPTER 12 애플리케이션 동작과 성능 관측 467

12.1 기술적 요구 사항 468

12.2 에러와 로그 캡처 468

__12.2.1 파이썬 로깅 기초 469

__12.2.2 좋은 로깅 프랙티스 482

__12.2.3 분산 로깅 484

__12.2.4 사후 리뷰를 위한 에러 캡처 487

12.3 코드와 커스텀 지표 조사 490

__12.3.1 프로메테우스 이용 492

12.4 분산 애플리케이션 트레이싱 502

__12.4.1 Jaeger를 이용한 분산 트레이싱 505

12.5 요약 511

 

CHAPTER 13 코드 최적화 513

13.1 기술적 요구 사항 514

13.2 나쁜 성능을 발생시키는 일반적인 요소들 514

__13.2.1 코드 복잡도 515

__13.2.2 과도한 리소스 할당과 누수 519

__13.2.3 과도한 I/O와 블로킹 520

13.3 코드 프로파일링 521

__13.3.1 CPU 사용량 프로파일링 522

__13.3.2 메모리 사용량 프로파일링 530

13.4 적절한 데이터 구조를 선택하여 복잡도 줄이기 541

__13.4.1 리스트 검색하기 541

__13.4.2 집합 이용하기 542

__13.4.3 collections 모듈 이용하기 543

13.5 아키텍처 트레이드오프 활용하기 548

__13.5.1 휴리스틱과 근사 알고리즘 이용하기 548

__13.5.2 태스크 큐와 지연된 처리 이용하기 550

__13.5.3 확률적 데이터 구조 이용하기 553

__13.5.4 캐싱 555

13.6 요약 563

 

찾아보기 565

 

 

제이펍 소식 더 보기(제이펍의 소통 채널에서 더욱 다양한 소식을 확인하세요!)

  네이버 책  포스트  유튜브  인스타그램  트위터  페이스북