아마존 파이썬 프로그래밍 분야 베스트셀러,
파이썬 코딩에는 파이썬다운 기술이 필요하다!
파이썬의 매력과 강점을 이용해 강력하고 우수한 성능의 코드를 작성하는 90가지 방법!
파이썬다운 방식으로 프로그램을 작성하는 방법, 파이썬을 사용하는 가장 좋은 방법에 대한 통찰을 담았다! 2판에서는 파이썬 3.8까지 이르는 파이썬 3에만 초점을 맞췄으며, 1판의 모든 내용을 검토하고 대부분의 내용을 수정하고 갱신했다. 또한, 파이썬 3의 새로운 기능에 대한 내용을 충분히 보강했다. 책 속에 담긴 90가지 Better way를 통해 무엇을 하고 무엇을 하지 말아야 할지, 이 방법이 왜 최선인지 이해하면서 자신의 코드를 향상시킬 수 있는 방법을 습득하자!
파이썬다운 생각을 키우자
파이썬만의 고유한 강점과 매력, 파이썬이 제공하는 풍부한 표현력을 이해하고 파이썬다운(Pythonic) 방식으로 프로그램을 작성하자. 파이썬을 사용하는 가장 좋은 방법에 대한 통찰을 담았다.
더 나은 코딩 노하우를 배우자
2판에서는 파이썬 3.8까지 이르는 파이썬 3에만 초점을 맞췄다. 다양한 팁과 기술을 현실성 있는 코드 예제와 함께 90가지 Better way에 수록했다. 파이썬을 활용한 모범 실무 사례를 익히고, 새로운 도구의 강점을 자신 있게 수용할 수 있게 해줄 것이다.
제공된 코드를 직접 실행하며 이해하자
이 책에 실린 코드 조각의 전체 코드가 별도 파일로 제공되므로 스스로 실습하기에 용이하다. 또한, 코드를 직접 수정해보고 프로그램을 실행하며 책에서 설명한 내용을 확실하게 이해할 수 있다.
[옮긴이 서문]
이 책은 코딩 기초를 떼고 파이썬 라이브러리의 사용법을 얼추 익힌, 초급에서 중급으로 발전하고 싶은 프로그래머가 꼭 읽어야 할 책이다. 이 책에서 설명하는 기본기를 확실히 체득하고 연습한 다음, 실전에서 다양한 코드를 읽고 작성해보며, 객체지향이나 함수형 프로그래밍, 비동기 프로그래밍 등과 같은 프로그래밍 패러다임을 다룬 책이나 인터넷 문서를 살펴보면서 실력을 쌓으면, 어디서 누구와 작업을 해도 신뢰할 만한 프로그래머라는 평가를 받으면서 일할 수 있을 것이다. 이 책을 읽은 독자들이 더 나은 프로그래머로 발전하고 파이썬 프로그래밍의 재미를 더 많이 느낄 수 있길 빈다.
옮긴이 서문 중에서
[추천평]
초판이 나왔을 때부터 이 책을 열정적으로 추천해왔다. 실용적인 파이썬 프로그래밍의 지혜가 담겨있는 보물 상자다.
- 웨스 맥키니(파이썬 판다스 프로젝트 창시자)
20여 년간 파이썬을 사용해왔지만, 파이썬 3에 새로 도입된 특성과 관련해 유용한 트릭을 많이 배웠다.
- 사이먼(윌리슨 장고 공동 창시자)
2판에서는 왈러스 연산자, f-문자열, typing 모듈 등과 같은 파이썬 3의 기능을 빠르게 습득할 수 있다.
파멜라 폭스(칸 아카데미 프로그래밍 코스 창시자)
책의 모든 곳에서 최고로 멋진 실용적인 정보를 영리하게 설명하고 있어서 각 절을 읽는 모든 순간이 즐거웠다.
마이크 바이어(SQLAlchemy 창시자)
효율적이고 괜찮은 코딩 습관을 일관성 있게 가르쳐 주는 고수를 만나세요. 저 역시 이 책을 다시 만나는 것이 즐겁습니다.
- 민형기(PinkWink 블로그)
책장에 꽂아두고, 틈틈이 꺼내 보고 싶은 책입니다. 조금 더 고급스러운 표현을 배우고 싶으신 분들께 강력하게 추천합니다!
- 송석리(한성과학고등학교 교사)
파이썬을 사랑하는 사람으로서 추천할 수밖에 없는 책이다.
- 차경묵(한날, Kay on the rails 블로그)
파이썬으로 프로그래밍을 처음 시작하든 다른 언어를 사용하다가 파이썬을 배우든 상관없이 꿀팁을 통해 파이썬을 파이썬답게 사용하는 데 도움이 될 것이다.
- 박조은(오늘코드)
실무에서 매일 파이썬을 다루는 엔지니어라 면, 여러분의 코드를 더욱 파이썬스럽게 만드는 비책을 여럿 습득할 수 있는 정말 좋은 기회가 될 것이다.
조인석(<초보자도 간단히 단숨에 배우는 파이썬> 저자 & 파이썬 멘토 유튜브 채널 운영자)
1장 파이썬답게 생각하기
Better way 1 사용 중인 파이썬의 버전을 알아두라
Better way 2 PEP 8 스타일 가이드를 따르라
Better way 3 bytes와 str의 차이를 알아두라
Better way 4 C 스타일 형식 문자열을 str.format과 쓰기보다는 f-문자열을 통한 인터폴레이션을 사용하라
Better way 5 복잡한 식을 쓰는 대신 도우미 함수를 작성하라
Better way 6 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹하라
Better way 7 range보다는 enumerate를 사용하라 066
Better way 8 여러 이터레이터에 대해 나란히 루프를 수행하려면 zip을 사용하라
Better way 9 for나 while 루프 뒤에 else 블록을 사용하지 말라
Better way 10 대입식을 사용해 반복을 피하라
2장 리스트와 딕셔너리
Better way 11 시퀀스를 슬라이싱하는 방법을 익혀라
Better way 12 스트라이드와 슬라이스를 한 식에 함께 사용하지 말라
Better way 13 슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용하라
Better way 14 복잡한 기준을 사용해 정렬할 때는 key 파라미터를 사용하라
Better way 15 딕셔너리 삽입 순서에 의존할 때는 조심하라
Better way 16 in을 사용하고 딕셔너리 키가 없을 때 KeyError를 처리하기보다는 get을 사용하라
Better way 17 내부 상태에서 원소가 없는 경우를 처리할 때는 setdefault보다 defaultdict를 사용하라
Better way 18 __missing__을 사용해 키에 따라 다른 디폴트 값을 생성하는 방법을 알아두라
3장 함수
Better way 19 함수가 여러 값을 반환하는 경우 절대로 네 값 이상을 언패킹하지 말라
Better way 20 None을 반환하기보다는 예외를 발생시켜라
Better way 21 변수 영역과 클로저의 상호작용 방식을 이해하라
Better way 22 변수 위치 인자를 사용해 시각적인 잡음을 줄여라
Better way 23 키워드 인자로 선택적인 기능을 제공하라
Better way 24 None과 독스트링을 사용해 동적인 디폴트 인자를 지정하라
Better way 25 위치로만 인자를 지정하게 하거나 키워드로만 인자를 지정하게 해서 함수 호출을 명확하게 만들라
Better way 26 functools.wrap을 사용해 함수 데코레이터를 정의하라
4장 컴프리헨션과 제너레이터
Better way 27 map과 filter 대신 컴프리헨션을 사용하라
Better way 28 컴프리헨션 내부에 제어 하위 식을 세 개 이상 사용하지 말라
Better way 29 대입식을 사용해 컴프리헨션 안에서 반복 작업을 피하라
Better way 30 리스트를 반환하기보다는 제너레이터를 사용하라
Better way 31 인자에 대해 이터레이션할 때는 방어적이 돼라
Better way 32 긴 리스트 컴프리헨션보다는 제너레이터 식을 사용하라
Better way 33 yield from을 사용해 여러 제너레이터를 합성하라
Better way 34 send로 제너레이터에 데이터를 주입하지 말라
Better way 35 제너레이터 안에서 throw로 상태를 변화시키지 말라
Better way 36 이터레이터나 제너레이터를 다룰 때는 itertools를 사용하라
5장 클래스와 인터페이스
Better way 37 내장 타입을 여러 단계로 내포시키기보다는 클래스를 합성하라
Better way 38 간단한 인터페이스의 경우 클래스 대신 함수를 받아라
Better way 39 객체를 제너릭하게 구성하려면 @classmethod를 통한 다형성을 활용하라
Better way 40 super로 부모 클래스를 초기화하라
Better way 41 기능을 합성할 때는 믹스인 클래스를 사용하라
Better way 42 비공개 애트리뷰트보다는 공개 애트리뷰트를 사용하라
Better way 43 커스텀 컨테이너 타입은 collections.abc를 상속하라
6장 메타클래스와 애트리뷰트
Better way 44 세터와 게터 메서드 대신 평범한 애트리뷰트를 사용하라
Better way 45 애트리뷰트를 리팩터링하는 대신 @property를 사용하라
Better way 46 재사용 가능한 @property 메서드를 만들려면 디스크립터를 사용하라
Better way 47 지연 계산 애트리뷰트가 필요하면 __getattr__, __getattribute__, __setattr__을 사용하라
Better way 48 __init_subclass__를 사용해 하위 클래스를 검증하라
Better way 49 __init_subclass__를 사용해 클래스 확장을 등록하라
Better way 50 __set_name__으로 클래스 애트리뷰트를 표시하라
Better way 51 합성 가능한 클래스 확장이 필요하면 메타클래스보다는 클래스 데코레이터를 사용하라
7장 동시성과 병렬성
Better way 52 자식 프로세스를 관리하기 위해 subprocess를 사용하라
Better way 53 블로킹 I/O의 경우 스레드를 사용하고 병렬성을 피하라
Better way 54 스레드에서 데이터 경합을 피하기 위해 Lock을 사용하라
Better way 55 Queue를 사용해 스레드 사이의 작업을 조율하라
Better way 56 언제 동시성이 필요할지 인식하는 방법을 알아두라
Better way 57 요구에 따라 팬아웃을 진행하려면 새로운 스레드를 생성하지 말라
Better way 58 동시성과 Queue를 사용하기 위해 코드를 어떻게 리팩터링해야 하는지 이해하라
Better way 59 동시성을 위해 스레드가 필요한 경우에는 ThreadpoolExecutor를 사용하라
Better way 60 I/O를 할 때는 코루틴을 사용해 동시성을 높여라
Better way 61 스레드를 사용한 I/O를 어떻게 asyncio로 포팅할 수 있는지 알아두라
Better way 62 asyncio로 쉽게 옮겨갈 수 있도록 스레드와 코루틴을 함께 사용하라
Better way 63 응답성을 최대로 높이려면 asyncio 이벤트 루프를 블록하지 말라
Better way 64 진정한 병렬성을 살리려면 concurrent.futures를 사용하라
8장 강건성과 성능
Better way 65 try/except/else/finally의 각 블록을 잘 활용하라
Better way 66 재사용 가능한 try/finally 동작을 원한다면 contextlib과 with 문을 사용하라
Better way 67 지역 시간에는 time보다는 datetime을 사용하라
Better way 68 copyreg를 사용해 pickle을 더 신뢰성 있게 만들라
Better way 69 정확도가 매우 중요한 경우에는 decimal을 사용하라
Better way 70 최적화하기 전에 프로파일링을 하라
Better way 71 생산자-소비자 큐로 deque를 사용하라
Better way 72 정렬된 시퀀스를 검색할 때는 bisect를 사용하라
Better way 73 우선순위 큐로 heapq를 사용하는 방법을 알아두라
Better way 74 bytes를 복사하지 않고 다루려면 memoryview와 bytearray를 사용하라
9장 테스트와 디버깅
Better way 75 디버깅 출력에는 repr 문자열을 사용하라
Better way 76 TestCase 하위 클래스를 사용해 프로그램에서 연관된 행동 방식을 검증하라
Better way 77 setUp, tearDown, setUpModule, tearDownModule을 사용해 각각의 테스트를 격리하라
Better way 78 목을 사용해 의존 관계가 복잡한 코드를 테스트하라
Better way 79 의존 관계를 캡슐화해 모킹과 테스트를 쉽게 만들라
Better way 80 pdb를 사용해 대화형으로 디버깅하라
Better way 81 프로그램이 메모리를 사용하는 방식과 메모리 누수를 이해하기 위해 tracemalloc을 사용하라
10장 협업
Better way 82 커뮤니티에서 만든 모듈을 어디서 찾을 수 있는지 알아두라
Better way 83 가상 환경을 사용해 의존 관계를 격리하고 반복 생성할 수 있게 하라
Better way 84 모든 함수, 클래스, 모듈에 독스트링을 작성하라
Better way 85 패키지를 사용해 모듈을 체계화하고 안정적인 API를 제공하라
Better way 86 배포 환경을 설정하기 위해 모듈 영역의 코드를 사용하라
Better way 87 호출자를 API로부터 보호하기 위해 최상위 Exception을 정의하라
Better way 88 순환 의존성을 깨는 방법을 알아두라
Better way 89 리팩터링과 마이그레이션 방법을 알려주기 위해 warning을 사용하라
Better way 90 typing과 정적 분석을 통해 버그를 없애라
찾아보기
독자의견 남기기