책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/clean-python
요약
파이썬을 더 나은 방법으로 코딩할 수 있도록 팁과 방법을 알려주는 지침서다. 파이썬의 내장 데이터 구조, 함수와 클래스, 딕셔너리, 모듈 및 메타 클래스, 데코레이터와 컨텍스트 매니저, 제너레이터와 이터레이터, 비동기 프로그래밍 등을 다룬다. 또한 파이썬 코드를 위한 디버깅과 테스트 방법을 알아보고, 다양한 파이썬 도구를 살펴볼 것이다.
이 책에서 다루는 내용
■ 파이썬 코드의 올바른 표현과 구문
■ 파이썬 딕셔너리의 생성과 할당
■ 파이썬에서의 고급 데이터 구조 작업
■ 더 나은 모듈, 클래스, 함수, 메타 클래스 작성
■ 비동기 파이썬 작성
■ 파이썬의 새로운 기능
목차
목차
- 1장. 파이써닉으로 생각하기
- 파이써닉 코드 작성
- 네이밍
- 코드 표현과 구문
- 코드 작성을 위한 파이써닉 방법의 수용
- 독스트링 사용
- 모듈 레벨 독스트링
- 클래스 독스트링 생성
- 함수 독스트링
- 유용한 독스트링 도구
- 파이써닉 제어 구조 작성
- 리스트 컴프리헨션 사용
- 복잡한 리스트 컴프리헨션 생성 금지
- 람다를 사용해야 하는가?
- 제너레이터와 리스트 컴프리헨션을 사용해야 하는 경우
- 루프와 함께 else를 사용하지 않는 이유
- 파이썬 3의 range가 더 좋은 이유
- 예외 발생
- 자주 발생하는 예외
- 예외 처리에서 finally의 장점
- 나만의 예외 클래스 생성
- 특정 예외 처리
- 서드 파티 예외 주의
- 최소한의 try 코드 선호
- 요약
- 파이써닉 코드 작성
- 2장. 데이터 구조
- 공통 데이터 구조
- 속도를 위한 집합 사용
- 데이터 반환 및 액세스를 위한 네임드튜플 사용
- str, 유니코드, 바이트의 이해
- 리스트 사용 시 주의 사항과 제너레이터 선호
- 리스트 처리를 위한 zip 사용
- 파이썬의 내장 함수 활용
- 딕셔너리의 장점
- 딕셔너리와 다른 데이터 구조를 사용하는 시기
- 컬렉션
- OrderedDict, defaultdict, 일반 딕셔너리
- 딕셔너리를 사용한 스위치 구문
- 두 개의 딕셔너리를 병합하는 방법
- 우아한 딕셔너리 출력
- 요약
- 공통 데이터 구조
- 3장. 더 나은 함수와 클래스 작성
- 함수
- 작은 함수 생성
- 제너레이터 반환
- None 반환 대신 예외 발생
- 디폴트 및 키워드 인자를 사용한 행동 추가
- 명시적인 None 반환 금지
- 방어적인 함수 작성
- 단일 표현식으로 람다 사용
- 클래스
- 클래스의 올바른 크기
- 클래스 구조
- @property를 사용하는 올바른 방법
- 정적 메서드 사용 시기
- 파이써닉 방법의 추상 클래스 상속 사용
- 클래스 상태 액세스를 위한 @classmethod 사용
- private 대신 public 속성 사용
- 요약
- 함수
- 4장. 모듈 및 메타클래스 작업
- 모듈과 메타클래스
- 모듈이 코드를 구성하는 데 도움이 되는 방법
- init 파일 활용
- 모듈의 함수와 클래스를 임포트하는 올바른 방법
- all 를 사용한 임포트 방지
- 메타클래스를 사용하는 경우
- 서브클래스 검증을 위한 new 사용
- slots 가 유용한 이유
- 메타클래스를 사용한 클래스 동작 변경
- 파이썬 디스크립터 다루기
- 요약
- 5장. 데코레이터와 컨텍스트 매니저
- 데코레이터
- 데코레이터의 의미와 유용한 이유
- 데코레이터의 이해
- 데코레이터를 사용한 동작 수정
- 다중 데코레이터 사용
- 데코레이터 인자 허용
- 데코레이터의 라이브러리 사용 시 고려 사항
- 상태 유지와 매개변수 유효성을 위한 클래스 데코레이터
- 컨텍스트 매니저
- 컨텍스트 매니저와 유용성
- 컨텍스트 매니저의 이해
- 컨텍스트 매니저 빌드를 위한 contextlib 사용
- 컨텍스트 매니저 사용의 실제 사례
- 요약
- 데코레이터
- 6장. 제너레이터와 이터레이터
- 이터레이터와 제너레이터의 활용
- 이터레이터의 이해
- 제너레이터란 무엇인가?
- 이터레이터를 사용하는 경우
- itertools 사용
- 제너레이터가 유용한 이유
- 리스트 컴프리헨션과 이터레이터
- yield 키워드 활용
- yield from
- 데이터 구조와 비교해 더 빠른 yield
- 요약
- 이터레이터와 제너레이터의 활용
- 7장. 새로운 파이썬 기능 활용
- 비동기 프로그래밍
- 파이썬의 비동기 도입
- 작동 방법
- 비동기 제너레이터
- 파이썬 타이핑
- 파이썬 타입
- typing 모듈
- 데이터 타입이 코드를 느리게 하는가?
- 타이핑으로 더 나은 코드를 작성하는 방법
- 타이핑의 단점
- super() 메서드
- 타입 힌트
- pathlib를 사용한 경로 처리 효율화
- 함수 print()
- f-string
- 키워드 전용 인자
- 딕셔너리 순서 유지
- 이터레이터 해제
- 요약
- 비동기 프로그래밍
- 8장. 파이썬 코드의 디버깅과 테스트
- 디버깅
- 디버깅 도구
- breakpoint
- 프로덕션 코드 출력 대신 logging 모듈 사용
- 병목 현상 식별을 위한 메트릭 라이브러리 사용
- IPython이 도움이 되는 방법
- 테스팅
- 테스팅이 중요한 이유
- Pytest와 UnitTest
- 속성 테스트
- 테스트 보고서 생성 방법
- 단위 테스트 자동화
- 프로덕션을 위한 코드 준비
- 파이썬의 단위 테스트와 통합 테스트 실행
- 요약
- 디버깅
- 9장. 멋진 파이썬 도구
- Sphinx
- 커버리지
- pre-commit
- virtualenv를 위한 Pyenv
- 주피터 랩
- 파이참/VSCode/서브라임
- Flake8/Pylint
도서 오류 신고
정오표
정오표
[p.27 : 본문 5행]
코드를 작성하면서 의식적으로 결정해야 한다.
->
코드를 작성할 때 신중하게 결정해야 한다.
[p.27 : 본문 5행]
한 라인 코드를 쓰는 것이 때로는 코드를 읽을 수 있게 해주지만 그렇지 않을 때도 있다.
->
한 라인 코드가 가독성이 좋은 경우도 있지만(읽기 쉬운 경우도 있지만) 그렇지 않은 경우도 있다.
[p.29 : 아래서 5행]
"".join() 메서드는 다양한 파이썬 구현에서 더 적은 시간 연계를 보장한다.
->
"".join() 메서드를 사용하면 문자열 결합에 걸리는 시간이 줄어든다.
[p.29 : 아래서 2행]
각 연결에 대해 새로운 메모리를 할당해야 하기 때문이다.
->
문자열을 결합할 때마다 새로운 메모리를 할당해야 한다.