/Effective-Python

Learn and summarize 'Effective Python'

Primary LanguagePython

Effective Python

-- It's for Koreans. For non-koreans, please see other posts.

  • 『파이썬 코딩의 기술』의 59장의 내용을 한 장씩 정리.

  • 책을 대신해서 볼 수 있을 정도로 구체적으로 옮김.

  • 책 버전은 초판 2쇄(2016-06-20).

  • V1 완료 날짜: 2019-07-06

  • 40, 41 챕터는 본인의 비동기에 대한 이해 부족으로 아직 공부 못 했음. 향후 업데이트 하겠습니다.


목차

1장. 파이썬다운 생각

  1. Better way 01. 사용 중인 파이썬의 버전을 알자
  2. Better way 02. PEP 8 스타일 가이드를 따르자
  3. Better way 03. bytes, str, unicode의 차이점을 알자
  4. Better way 04. 복잡한 표현식 대신 헬퍼 함수를 사용하자
  5. Better way 05. 시퀀스를 슬라이스하는 방법을 알자
  6. Better way 06. 한 슬라이스에 start, end, stride를 함께 쓰지 말자
  7. Better way 07. map과 filter 대신에 리스트 컴프리헨션을 사용하자
  8. Better way 08. 리스트 컴프리헨션에서 표현식을 두 개 넘게 쓰지 말자
  9. Better way 09. 컴프리헨션이 클 때는 제너레이터 표현식을 고려하자
  10. Better way 10. range보다는 enumerate를 사용하자
  11. Better way 11. 이터레이터를 병렬로 처리하려면 zip을 사용하자
  12. Better way 12. for와 while 루프 뒤에는 else 블록을 쓰지 말자
  13. Better way 13. try/except/ese/finally에서 각 블록의 장점을 이용하자

2장. 함수

  1. Better way 14. None을 반환하기 보다 예외를 일으키자
  2. Better way 15. 클로저가 변수 스코프와 상호 작용하는 방법을 알자
  3. Better way 16. 리스트를 반환하는 대신 제너레이터를 고려하자
  4. Better way 17. 인수를 순회할 때는 방어적으로 하자
  5. Better way 18. 가변 위치 인수로 깔끔하게 보이게 하자
  6. Better way 19. 키워드 인수로 선택적인 동작을 제공하자
  7. Better way 20. 동적 기본 인수를 지정하려면 None과 docstring을 사용하자
  8. Better way 21. 키워드 전용 인수로 명료성을 강요하자

3장. 클래스와 상속

  1. Better way 22. 딕셔너리와 튜플보다는 헬퍼 클래스로 관리하자
  2. Better way 23. 인터페이스가 간단하면 클래스 대신 함수로 받자
  3. Better way 24. 객체를 범용으로 생성하려면 @classmethod 다형성을 이용하자
  4. Better way 25. super로 부모 클래스를 초기화하자
  5. Better way 26. 믹스인 유틸리티 클래스에만 다중 상속을 사용하자
  6. Better way 27. 공개 속성보다는 비공개 속성을 사용하자
  7. Better way 28. 커스텀 컨테이너 타입은 collection.abc의 클래스를 상속받게 만들자.

4장. 메타클래스와 속성

  1. Better way 29. 게터와 세터 메서드 대신에 일반 속성을 사용하자
  2. Better way 30. 속성을 리팩토링하는 대신 @property를 고려하자
  3. Better way 31. 재사용 가능한 @property 메서드에는 디스크럽터를 사용하자
  4. Better way 32. 지연 속성에는 __getattr__, __getattribute__, __setattr__을 사용하자
  5. Better way 33. 메타클래스로 서브클래스를 검증하자
  6. Better way 34. 메타클래스로 클래스의 존재를 등록하자
  7. Better way 35. 메타클래스로 클래스 속성에 주석을 달자

5장. 병행성과 병렬성

  1. Better way 36. 자식 프로세스를 관리하려면 subprocess를 사용하자
  2. Better way 37. 스레드를 블로킹 I/O용으로 사용하고 병렬화용으로는 사용하지 말자
  3. Better way 38. 스레드에서 데이터 경쟁을 막으려면 Lock을 사용하자
  4. Better way 39. 스레드 간의 작업을 조율하려면 Queue를 사용하자
  5. [Better way 40. 많은 함수를 동시에 실행하려면 코루틴을 고려하자][way40]
  6. [Better way 41. 진정한 병렬성을 실현하려면 concurrent.futures를 고려하자][way41]

6장. 내장 모듈

  1. Better way 42. functions.wrap로 함수 데코레이터를 정의하자
  2. Better way 43. 재사용 가능한 try/finally 동작을 만들려면 contextlib와 with문을 고려하자
  3. Better way 44. copyreg으로 pickle을 신뢰할 수 있게 만들자
  4. Better way 45. 지역 시간은 time이 아닌 datetime으로 표현하자
  5. Better way 46.  내장 알고리즘과 자료구조를 사용하자
  6. Better way 47. 정밀도가 중요할 때는 decimal을 사용하자
  7. Better way 48. 커뮤니티에서 만든 모듈을 어디서 찾아야 하는지 알아두자

7장. 협력

  1. Better way 49. 모든 함수, 클래스, 모듈에 docstring을 작성하자
  2. Better way 50. 모듈을 구성하고 안정적인 API를 제공하려면 패키지를 사용하자
  3. Better way 51. 루트 Exception을 정의해서 API로부터 호출자를 보호하자
  4. Better way 52. 순환 의존성을 없애는 방법을 알자
  5. Better way 53. 의존성을 분리하고 재현하려면 가상 환경을 사용하자

8장. 제품화

  1. Better way 54. 배포 환경을 구성하는 데는 모듈 스코프 코드를 고려하자
  2. Better way 55. 디버깅 출력용으로는 repr 문자열을 사용하자
  3. Better way 56. unittest로 모든 것을 테스트하자
  4. Better way 57. pdb를 이용한 대화식 디버깅을 고려하자
  5. Better way 58. 최적화하기 전에 프로파일하자
  6. Better way 59. tracemalloc으로 메모리 사용 현황과 누수를 파악하자

시 하나 읽고 가세요.

사랑했던 나의 마음 속에 작은 꿈 하나만을 남겨두고 너무 쉽게 떠나버린 너를 이제는 이해하려 해. -- 달마도사 김혈국