메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

매우 실용적인 파이썬 중/고급 개발서

tee***

|

2021-02-21

진지한 파이썬

파이썬 고수가 되고 싶은 개발자를 위한 실전 프로그래밍 지침서. 파이썬의 기능과 능력을 제대로 활용해 프로그램을 체계적으로 구축하는 방법을 소개한다. 문서화, 버전 관리, 시간대 설정 방법, 패키징, 테스트, 배포 등 개발에 필요한 필수 지식뿐 아니라 유명 파이썬 개발자들의 경험담까지 담았다.

  • 저자 : 쥘리앵 당주
  • 번역 : 김영하
  • 출간 : 2021-01-25

 

[들어가며]

 

파이썬을 개발하면서 

실제로 부딪히는 문제들에 대해

훌륭한 해결책을 제시하는 책이다. 

 

시간대, 문서화, DB, 성능, 아키텍처 등

다양한 주제에 대해 

실제로 프로젝트를 진행하기 위해서 

고려해야하는 사항과 해결책을 알려준다.

 

단순히 파이썬 내부 구조나 

표준 Built-in 라이브러리에 대한 해설이 아니라,

각 상황별 문제를 해결할 수 있는 

추가 패키지를 적절히 제시해주는데, 

문제를 바로 해결할 수 있다는 측면에서 

무척 편리하고 아름다운 해결책이 많다. 

 

[저자]

 

저자인 쥘리앵 당주는 

파이썬 쪽에서 가장 큰 프로젝트인 

'오픈스택'의 프로젝트 팀 리더로

파이썬 계에서는 매우 잘 알려진 인물이다.

 

(오픈스택은 250만줄이 넘는 코드가 

파이썬으로 작성된 대형 프로젝트로 

파이썬의 모든 가능성과 기능을 점검하기 

무리가 없는 프로젝트이다.)

 

[역자]

 

역자는 김영하 님으로, 

이미 이분이 번역하신 도서를 

다수 읽었었고, 큰 도움을 받았기 때문에 

의심없이 공부할 수 있었다. 

 

[결론]

 

훌륭한 저자, 역자, 내용의 

삼박자가 갖추어진 책으로

파이썬 중급/고급을 꿈꾸는 개발자라면

큰 도움을 받을만한 책이다. 

 

실제로 책 본문에는 

어떤 내용이 등장하는지 소개하기 위해

개인적으로 공부하면서 정리했던 자료 중 

일부를 첨부한다. 

 

[CHAPTER 1 프로젝트 시작하기]

 

* 파이썬3를 사용

* 프로젝트 구조를 단순하게 설계

* README.rst/txt로 프로젝트 정보를 제공

* 패키지 문서를 reStructuredText 형식으로 작성해서 저장

* PEP 440 의 패키지 버전관리 구조를 준수

* pycodestyle 을 사용해서 PEP 8 의 코딩 스타일을 준수

* flake8 을 사용해서 코딩 오류를 검사

 

[CHAPTER 2 모듈, 라이브러리, 프레임워크]

 

* import 는 내부적으로 __import__ 를 호출

* sys.modules 는 OS의 변수/함수 액세스 제공

* sys.path 로 모듈 경로 위치 검색

* PEP 302 의 사용자 정의 지정 불러오기 사용

* sys.meta_path 또는 sys.path_hooks 를 통해 경로 항목 파인더 사용

* 메타 경로 파인더는 .py 외 .Hy 등 다른 사용자 지정 객체 로딩 가능

* 유용한 표준 라이브러리 목록

* 외부 라이브러리를 사용할 때 먼저 확인할 체크리스트

* pip 를 통한 패키지 설치와 관리

* 프레임워크 사용 및 선택 시 고려사항

    - 프레임워크의 기능이 적을수록 문제가 덜 발생

    - 프레임워크의 기능이 적을수록 기능이 부족해서 불편함

 

[CHAPTER 3 문서화와 모범 API 사례]

 

* 스핑크스를 사용해서 프로젝트를 문서화를 자동화

* API를 변경할 때 관리하고 문서화하는 방법

* 소스코드와 문서의 분리가 심할 수록 문서를 적절하게 유지 관리하기가 어려워짐

* 파이썬 문서의 일반 형식은 reStructuredText(reST, 마크다운과 비슷)

* sphinx.net.autodoc 을 통해 모듈에서 .rst 를 자동 생성

* sphinx.ext.autosummary 로 목차 제작 자동화

* 파이썬 doctext 모듈로 문서 생성 시 자동으로 문서명세 vs 소스구현 점검

* 공개 API 와 다르게 내부 API 는 언더바(_)로 시작

* API 버전 관리

    - 메이저 버전 = 이전과 큰 변화로 호환 불가 = 1, 2,  ...

    - 마이너 버전 = 일부 기능 추가 = 1.1, 1.2, ...

    - 메인터넌스 버전 = 버그 수정 = 1.1.1, 1.1.2, ...

* API 변경 사항에 대해 문서화

    - 추가 요소

    - 제거 요소

    - 신규 API로 변경하는 절차

* warnings 모듈로 사용자가 권장하지 않는 함수를 호출할 때 경고를 출력

 

[CHAPTER 4 시간 정보와 시간대 다루기]

 

* 시간대는 UTC +- 12 가 전부가 아니라, 15분 단위도 존재

    - 15분 단위의 시간대, 1년에 시간대 2번 변경, 서머타임등의 변수도 고려

    - 시간대가 없는 timestamp 는 무쓸모

* 시간대는 항상 UTC로 변환해서 저장

* datetime.datetime.utcnow() 로 UTC 현재 일시 획득 가능

* dateutil로 시간대 정보가 있는 시간 정보 생성

    - pip install python-dateutil

    - from dateutil import tz

    - tz.gettz("Asia/Seoul")

    - tz.gettz("GMT+8")

* datetime.datetime.isoformat() 으로 시간대 정보가 있는 datetime 객체 직렬화

    - pip install iso8601

    - ISO 8601 방식으로 시간 정보 반환

* dateutil 의 is_ambiguous() 사용해서 애매한 시간 정보 확인 가능

    - 예) 서머타임이 2시 -> 3시 해제될 때

    -     2:30 데이터가 해제 전 2:30 인지 아니면 해제 후 2:30 인지 확인 가능

* datetime 객체의 fold 속성으로 소속 시간정보 확인 가능

    - PEP 495 를 적용한 Python 3.6 부터 수행

 

[CHAPTER 5 개발한 소프트웨어 배포하기]

 

(생략)

 

[CHAPTER 6 단위 테스트]

 

(생략)

 

[CHAPTER 7 메서드와 데커레이터]

 

(생략)

 

[CHAPTER 8 함수형 프로그래밍]

 

(생략)

 

[CHAPTER 9 AST, Hy, 리스프 계열 속성]

 

(생략)

 

[CHAPTER 10 성능과 최적화]

 

(생략)

 

[CHAPTER 11 확장과 구조]

 

(생략)

 

[CHAPTER 12 관계형 데이터베이스 관리]

 

(생략)

 

[CHAPTER 13 효율적으로 코딩하기]

 

(생략)

 

 

출판사에서 책을 보내주셔서,

읽어본 느낌을 솔직하게 작성한 리뷰입니다.

도서 1부 외 다른 의뢰/대가/보상이 

없었음을 명시합니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?