logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

Effective Python 이펙티브 파이썬 3판

Effective Python 이펙티브 파이썬 3판

(더 명확하고, 더 안전하고, 더 파이썬다운 코드를 작성하는 실전 가이드 125)

브렛 슬라킨 (지은이), 오현석 (옮긴이)
길벗
42,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
37,800원 -10% 0원
2,100원
35,700원 >
37,800원 -10% 0원
2,100원
35,700원 >
37,800원 -10% 0원
2,100원
35,700원 >
37,800원 -10% 0원
2,100원
35,700원 >
11st 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

Effective Python 이펙티브 파이썬 3판
eBook 미리보기

책 정보

· 제목 : Effective Python 이펙티브 파이썬 3판 (더 명확하고, 더 안전하고, 더 파이썬다운 코드를 작성하는 실전 가이드 125)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 파이썬
· ISBN : 9791140717781
· 쪽수 : 720쪽
· 출판일 : 2026-02-27

책 소개

파이썬을 ‘쓸 줄 아는 코드’에서 ‘설계할 줄 아는 코드’로 끌어올리는 실전 지침서, 함수와 제너레이터, 클래스 설계부터 동시성, 성능 최적화, 테스트까지 125개 아이템으로 정리했다. 파이썬 3.13 기준 전면 개정과 신규 아이템 35개 추가로 최신 모범 사례를 반영했다.
파이썬, 쓸 줄 아는 코드에서, 설계할 줄 아는 코드로!

파이썬을 파이썬답게 쓰는 법
파이썬은 독특한 강점과 매력을 지닌 언어이나, 많은 개발자가 파이썬의 풍부한 표현력을 충분히 활용하지 못하거나, 반대로 기능을 과도하게 사용해 유지보수와 안정성에서 문제를 겪는다. 『이펙티브 파이썬』은 이러한 시행착오를 줄이고, 파이썬다운 방식으로 코드를 작성하기 위해 어떤 선택을 해야 하는지에 대한 올바른 기준을 제시한다. “왜 이 방식이 더 파이썬다운가?”라는 질문을 중심에 두고, 파이썬의 철학을 코드 수준에서 이해하도록 돕는다.

강력한 파이썬 코딩의 모범 사례 125
『이펙티브 파이썬』의 가장 큰 강점은 ‘왜 그렇게 해야 하는지’를 명확한 논리와 사례로 분명히 설명하면서 가독성, 유지보수성, 안정성, 성능을 함께 고려한 파이썬다운 설계 기준을 제시한다는 점이다. 각 장은 독립적으로 읽을 수 있는 아이템으로 구성되어 있으며, 무엇을 선택해야 하고 무엇을 피해야 하는지, 그 선택이 왜 최선인지를 사례를 통해 명확하게 보여준다. 함수와 제너레이터, 클래스와 인터페이스 설계부터 동시성, 성능 최적화, 예외 처리, 테스트와 협업에 이르기까지, 실무에서 자주 마주치는 주제를 중심으로 더 나은 코드로 개선해 나가는 사고 과정을 차분히 안내한다. 3판에서는 파이썬 3.13까지의 최신 버전을 기준으로 내용을 전면 개정하고, 새로운 아이템 35개를 추가했으며, 변화해 온 모범 사례를 반영해 기존 조언도 대폭 수정했다.

AI 이후에도 남는 파이썬 실력
AI가 코드를 만들어 주는 시대다. 하지만 그 코드를 판단하고 선택하는 기준은 여전히 개발자의 몫이다. 『이펙티브 파이썬』은 동작하는 코드를 넘어 한 단계 더 깊이 있는 설계 역량을 기르고자 하는 파이썬 개발자에게 믿을 수 있는 기준을 제시한다. 이 책은 한 번 읽고 끝내는 참고서가 아니라, 파이썬을 더 잘 활용하고 싶은 개발자 곁에서 지속적으로 방향을 잡아 주는 조언자이자, 파이썬을 사용하는 과정 자체를 더 즐겁고 깊이 있게 만들어 줄 동반자가 되어 줄 것이다.

[베타테스터 후기]
AI 시대, 지식에 대한 접근과 검색은 쉬워졌지만 문제를 깊이 이해하고 사색하는 과정은 오히려 더 어려워졌습니다. 그리고 바로 그 지점이 사람이 더 잘할 수 있는 영역이라고 말하고 싶습니다. 파이썬을 활용하는 방법을 고민하고, 끊임없이 질문하는 과정은 결국 더 나은 개발자로 성장하는 밑거름이 될 것입니다. (김진환_고려사이버대학교 소프트학부, 외래교수)

파이썬 개발자에게 꼭 필요한 지식을 압축하여 담아낸 책으로, 파이썬 관련 서적 중 반드시 읽어야 할 가장 중요한 필독서라고 생각합니다. 이번 3판은 최신 기능과 관련 노하우가 추가되어, 더욱 알찬 내용으로 구성되었습니다. (이진우_라프텔, 16년차 백엔드 개발자)

단순한 문법 팁을 넘어 API 설계와 테스트 가능성, 유지보수성까지 고려한 선택을 요구합니다. 특히 모든 장에서 하나의 ‘정답’을 강요하지 않고, 어떤 상황에서 이 선택이 더 나은지를 설명한다는 점이 마음에 들었습니다. (이준원_Python Korea, C++ Korea 운영진)

많은 파이썬 책이 데이터 타입, 리스트, 클래스 같은 기초부터 설명하는 데 비해, 이 책은 접근 방식부터가 다릅니다. 파이썬을 어느 정도 다룰 수 있는 개발자가 중급 이상의 단계로 나아가기 위해 반드시 읽어야 할 책입니다. (노관옥_라프텔, 6년차 백엔드 엔지니어)

읽고 나서 직접 기록해 보고 실험해 보고 싶은 것들이 많이 생겼습니다. 개발자의 시야를 넓혀 주기에는 더없이 좋은 책이라고 느꼈습니다. (권혁민_4년차 백엔드 개발자)

파이썬을 더욱 파이썬답게 활용할 수 있을 뿐만 아니라, 나아가 어떤 방식이 성능 측면에서도 더 적절한 선택인지까지 이해할 수 있게 됩니다. (전현준_원라인에이아이, 8년차 풀스택 개발자)

AI가 생성한 코드는 일단 동작하기는 하지만, 과연 파이썬다운 코드인지는 별개의 문제입니다. 이 책은 이러한 코드를 리팩터링할 때 어떤 기준으로 개선해야 하는지에 대해 명확한 방향을 제시해 줍니다. (정소미_한양대학교 인공지능융합대학원)

파이썬 문법을 그대로 사용하는 단계에서 벗어나, 다음 경지로 도약하고자 하는 개발자에게 추천합니다. (윤병조_소프트웨어 엔지니어)

목차

1장 파이썬답게 생각하기
[아이템 1] 사용 중인 파이썬의 버전을 알아두라
[아이템 2] PEP 8 스타일 가이드를 따르라
____________공백
____________명명 규약
____________표현식과 문장
____________임포트
____________자동화
[아이템 3] 파이썬이 컴파일 시점에 오류를 감지하리라고 절대로 기대하지 말라
[아이템 4] 복잡한 식을 쓰는 대신 도우미 함수를 작성하라
[아이템 5] 인덱스를 사용하는 대신 다중 대입을 사용해 데이터를 언패킹하라
[아이템 6] 원소가 하나뿐인 튜플은 항상 괄호로 둘러싸라
[아이템 7] 단순한 인라인 로직의 경우 조건식 사용을 검토하라
[아이템 8] 대입식을 사용해 반복을 피하라
[아이템 9] 흐름 제어 시 구조분해에 match를 사용할 것을 고려하라. 하지만 if 문으로 충분하다면 match를 피하라
_____________match는 구조분해를 한다
_____________반쯤 구조화된 데이터와 캡슐화된 데이터

2장 문자열과 슬라이스
[아이템 10] bytes와 str의 차이를 이해하라
[아이템 11] C 스타일 형식 문자열과 str.format보다는 t-문자열이나 f-문자열 인터폴레이션을 사용하라
______________C 스타일 형식화
_____________내장 함수 format과 str.format
_____________인터폴레이션 형식 문자열
[아이템 12] 객체를 출력할 때는 repr과 str의 차이를 이해하라
[아이템 13] 암시적 문자열 연결보다는 명시적 연결을 선호하라. 특히 리스트의 경우 명시적 연결을 사용하라
[아이템 14] 시퀀스를 슬라이스하는 방법을 익혀라
[아이템 15] 스트라이드와 슬라이스를 한 식에 함께 사용하지 말라
[아이템 16] 슬라이스 대신 포괄적 언패킹을 선호하라

3장 루프와 이터레이션
[아이템 17] range보다는 enumerate를 사용하라
[아이템 18] 여러 이터레이터에 대해 나란히 루프를 수행하려면 zip을 사용하라
[아이템 19] for나 while 루프 뒤에 else 블록을 사용하지 말라
[아이템 20] 루프 종료 후 for 루프 변수를 사용하지 말라
[아이템 21] 인자에 대해 이터레이션할 때는 방어적으로 접근하라
[아이템 22] 컨테이너에 대해 이터레이션하는 중이라면 결코 컨테이너의 내용을 변경하지 말라. 변경을 해야 한다면 컨테이너를 직접 이터레이션하지 말고 복사본이나 캐시를 사용하라
[아이템 23] 효율적인 쇼트 서킷 로직을 사용하려면 any나 all에게 이터레이터를 전달하라
[아이템 24] 이터레이터나 제너레이터를 다룰 때는 itertools를 사용하라
_____________여러 이터레이터 연결하기
이터레이터에서 원소 거르기
이터레이터에서 원소의 조합 만들어내기

4장 딕셔너리
[아이템 25] 딕셔너리 삽입 순서에 의존할 때는 조심하라
[아이템 26] in을 쓰고 딕셔너리 키가 없는 경우를 KeyError로 처리하지 말고 get을 사용하라
[아이템 27] 내부 상태에서 원소가 없는 경우를 처리할 때는 setdefault보다 defaultdict를 사용하라
[아이템 28] __missing__을 사용해 키에 따라 다른 디폴트 값을 생성하는 방법을 알아두라
[아이템 29] 딕셔너리, 리스트, 튜플을 깊게 중첩시키기보다는 클래스를 합성하라
클래스를 활용해 리팩터링하기

5장 함수
[아이템 30] 함수 인자가 변경될 수 있다는 점을 기억하라
[아이템 31] 세 개를 초과하는 변수를 언패킹하게 만들지 말고 전용 결과 객체를 반환하라
[아이템 32] None을 반환하기보다는 예외를 발생시켜라
[아이템 33] 클로저가 변수 영역 및 nonlocal과 상호작용하는 방식을 이해하라
[아이템 34] 변수 위치 인자를 사용해 시각적인 잡음을 줄여라
[아이템 35] 키워드 인자로 선택적인 기능을 제공하라
[아이템 36] None과 독스트링을 사용하여 동적인 디폴트 인자를 지정하라
[아이템 37] 위치로만 인자를 지정하거나 키워드로만 인자를 지정하게 해서 함수 호출을 명확하게 만들라
[아이템 38] functools.wraps를 사용해 함수 데코레이터를 정의하라
[아이템 39] 글루 함수로는 lambda 식보다 functools.partial을 사용하라

6장 컴프리헨션과 제너레이터
[아이템 40] map과 filter 대신 컴프리헨션을 사용하라
[아이템 41] 컴프리헨션 내부에 제어 하위 식을 3개 이상 사용하지 말라
[아이템 42] 대입식을 사용해 컴프리헨션 안에서 반복 작업을 피하라
[아이템 43] 리스트를 반환하기보다는 제너레이터를 사용하라
[아이템 44] 긴 리스트 컴프리헨션보다는 제너레이터 식을 사용하라
[아이템 45] yield from을 사용해 여러 제너레이터를 합성하라
[아이템 46] 제너레이터의 send 메서드를 호출하는 대신 이터레이터를 제너레이터에게 인자로 전달하라
[아이템 47] 제너레이터에서 throw 메서드를 쓰는 대신 클래스로 이터레이션의 상태 전이를 관리하라

7장 클래스와 인터페이스
[아이템 48] 간단한 인터페이스의 경우 클래스 대신 함수를 받아라
[아이템 49] 함수와 isinstance 검사를 사용하기보다 객체지향 다형성을 선호하라
[아이템 50] 객체지향 다형성 대신 함수형 스타일 프로그래밍을 할 때는 functools.singledispatch를 고려하라
[아이템 51] 경량 클래스를 정의할 때는 dataclasses를 선호하라
____________ __init__ 보일러플레이트 피하기
_____________초기화 인자를 키워드 인자로 받도록 하라
_____________디폴트 애트리뷰트 값 지정하기
_____________객체를 문자열로 표현하기
_____________객체를 튜플로 변환하기
_____________객체를 딕셔너리로 변환하기
_____________객체가 동등한지 확인하기
_____________객체를 서로 비교할 수 있게 하기
[아이템 52] 객체를 제너릭하게 구성하려면 @classmethod를 통한 다형성을 활용하라
[아이템 53] super로 부모 클래스를 초기화하라
[아이템 54] 기능을 합성할 때는 믹스인 클래스를 사용하라
[아이템 55] 비공개 애트리뷰트보다는 공개 애트리뷰트를 사용하라
[아이템 56] 불변 객체를 생성할 때는 dataclasses를 선호하라
_____________객체의 변경 막기
_____________애트리뷰트를 변경한 객체 복사본 생성하기
_____________딕셔너리와 집합에서 불변 객체 사용하기
[아이템 57] 커스텀 컨테이너 타입을 정의할 때는 collections.abc를 상속하라

8장 메타클래스와 애트리뷰트
[아이템 58] 세터와 게터 메서드 대신 평범한 애트리뷰트를 사용하라
[아이템 59] 애트리뷰트를 리팩터링하는 대신 @property를 사용하라
[아이템 60] 재사용 가능한 @property 메서드를 만들려면 디스크립터를 사용하라
[아이템 61] 지연 계산 애트리뷰트가 필요하면 __getattr__, __getattribute__, __setattr__를 사용하라
[아이템 62] __init_subclass__를 사용해 하위 클래스를 검증하라
[아이템 63] __init_subclass__를 사용해 클래스 확장을 등록하라
[아이템 64] __set_name__으로 클래스 애트리뷰트를 표시하라
[아이템 65] 클래스 본문 정의 순서를 고려해 애트리뷰트 간 관계를 설정하라
[아이템 66] 합성 가능한 클래스 확장이 필요하면 메타클래스보다는 클래스 데코레이터를 사용하라

9장 동시성과 병렬성
[아이템 67] 자식 프로세스를 관리하기 위해 subprocess를 사용하라
[아이템 68] 스레드를 블러킹 I/O에 사용하고 병렬성에는 사용하지 말라
[아이템 69] 스레드에서 데이터 경합을 피하기 위해 Lock을 사용하라
[아이템 70] Queue를 사용해 스레드 사이의 작업을 조율하라
_____________대안: Queue
[아이템 71] 언제 동시성이 필요할지 인식하는 방법을 알아두라
[아이템 72] 온디멘드로 팬아웃을 진행하려면 새로운 스레드 생성을 피하라
[아이템 73] 동시성과 Queue를 사용하기 위해 코드를 어떻게 리팩터링해야 하는지 이해하라
[아이템 74] 동시성을 위해 스레드가 필요한 경우에는 ThreadPoolExecutor를 사용하라
[아이템 75] 코루틴을 사용해 높은 I/O 동시성을 달성하라
[아이템 76] 스레드를 사용한 I/O를 어떻게 asyncio로 포팅할 수 있는지 알아두라
[아이템 77] asyncio로 쉽게 옮겨갈 수 있도록 스레드와 코루틴을 함께 사용하라
_____________하향식 접근 방법
_____________상향식 접근 방법
[아이템 78] async에 친화적인 작업자 스레드를 사용해서 asyncio 이벤트 루프의 응답성을 최대화하라
[아이템 79] 진정한 병렬성을 살리려면 concurrent.futures를 사용하라

10장 강건성
[아이템 80] try/except/else/finally의 각 블록을 잘 활용하라
_____________finally 블록
_____________else 블록
_____________모든 요소를 한꺼번에 사용하기
[아이템 81] assert로 내부 가정을 검증하고 예상을 벗어난 경우 예외를 raise하라
[아이템 82] 재사용 가능한 try/finally 동작을 원한다면 contextlib과 with 문을 사용하라
_____________as 타깃 지정 활성화하기
[아이템 83] 언제나 try 블록을 최대한 짧게 만들라
[아이템 84] 예외 변수가 사라지는 것에 주의하라
[아이템 85] Exception 클래스를 catch할 때는 조심하라
[아이템 86] Exception과 BaseException의 차이를 이해하라
[아이템 87] traceback을 사용해 예외 보고를 개선하라
[아이템 88] traceback을 명확히 하기 위해 예외를 명시적으로 연결할 것을 고려하라
[아이템 89] 항상 자원을 제너레이터에게 넘기고 호출하는 쪽이 제너레이터 밖에서 자원을 해제하게 하라
[아이템 90] 절대로 __debug__를 False로 설정하지 말라
[아이템 91] 개발자 도구를 만드는 경우가 아니라면 exec와 eval을 피하라

11장 성능
[아이템 92] 최적화하기 전에 프로파일링을 하라
[아이템 93] timeit을 사용한 마이크로벤치마크를 통해 성능이 중요한 코드를 최적화하라
[아이템 94] 언제, 왜 파이썬을 다른 프로그래밍 언어로 대체할지 알아두라
[아이템 95] 네이티브 라이브러리와 빠르게 통합하기 위해 ctypes를 고려하라
[아이템 96] 성능과 편의성을 최대화하기 위해 확장 모듈을 고려하라
[아이템 97] 프로그램 시작 시간을 줄이기 위해 미리 컴파일된 바이트코드와 파일 시스템 캐시에 의존하라
[아이템 98] 지연 로딩 모듈과 동적 임포트를 사용해 프로그램 시작 시간을 줄여라
[아이템 99] bytes를 복사하지 않고 다루려면 memoryview와 bytearray를 사용하라

12장 데이터 구조와 알고리즘
[아이템 100] 복잡한 기준을 사용해 정렬할 때는 key 파라미터를 사용하라
[아이템 101] sort와 sorted의 차이를 이해하라
[아이템 102] 정렬된 시퀀스를 검색할 때는 bisect를 사용하라
[아이템 103] 생산자-소비자 큐로 deque를 사용하라
[아이템 104] 우선순위 큐로 heapq를 사용하는 방법을 알아두라
[아이템 105] 지역 시간에는 time보다는 datetime을 사용하라
_______________time 모듈
_______________datetime 모듈
[아이템 106] 정확도가 매우 중요한 경우에는 decimal을 사용하라
[아이템 107] copyreg를 사용해 pickle을 더 신뢰성 있게 만들라
_______________디폴트 애트리뷰트 값
_______________클래스 버전 지정
_______________안정적인 임포트 경로

13장 테스트와 디버깅
[아이템 108] TestCase 하위 클래스를 사용해 프로그램에서 연관된 행동 방식을 검증하라
[아이템 109] 단위 테스트보다 통합 테스트를 선호하라
[아이템 110] setUp, tearDown, setUpModule, tearDownModule을 사용해 각각의 테스트를 격리하라
[아이템 111] 목을 사용해 의존성이 복잡한 코드를 테스트하라
[아이템 112] 의존성을 캡슐화해서 모킹과 테스트를 쉽게 만들라
[아이템 113] assertAlmostEqual을 써서 부동소수점 테스트의 정밀도를 제어하라
[아이템 114] pdb를 사용한 대화형 디버깅을 고려하라
[아이템 115] 프로그램이 메모리를 사용하는 방식과 메모리 누수를 이해하기 위해 tracemalloc을 사용하라

14장 협업
[아이템 116] 커뮤니티에서 만든 모듈을 어디서 찾을 수 있는지 알아두라
[아이템 117] 가상 환경을 사용해 의존성을 격리하고 반복 생성할 수 있게 하라
_______________명령줄에서 venv 사용하기
_______________의존성 재생성하기
[아이템 118] 모든 함수, 클래스, 모듈에 독스트링을 작성하라
_______________모듈 문서화하기
_______________클래스 문서화하기
_______________함수 문서화하기
_______________독스트링과 타입 애너테이션 사용하기
[아이템 119] 패키지를 사용해 모듈을 체계화하고 안정적인 API를 제공하라
_______________네임 스페이스
_______________안정적인 API
[아이템 120] 배포 환경을 설정하기 위해 모듈 영역의 코드 사용을 고려하라
[아이템 121] 호출자를 API로부터 보호하기 위해 최상위 Exception을 정의하라
[아이템 122] 순환 의존성을 깨는 방법을 알아두라
_______________임포트 순서 바꾸기
_______________임포트, 설정, 실행
[아이템 123] 리팩터링과 마이그레이션 방법을 알려주기 위해 warnings를 사용하라
[아이템 124] typing을 통한 정적 분석으로 버그를 없애라
[아이템 125] 파이썬 번들을 만들 때는 zipimport나 zipapp보다는 오픈 소스 프로젝트를 선호하라

저자소개

브렛 슬라킨 (지은이)    정보 더보기
현재 구글 CTO실의 프린시펄(principal) 소프트웨어 엔지니어로 기술 전략과 빠른 프로토타입을 개발하고 있다. 머신러닝과 시장 조사 데이터 집합을 수집하는 구글 사내 스타트업인 구글 서베이(Survey)의 공동 설립자였고, 구글의 첫 번째 클라우드 컴퓨팅 제품인 구글 앱 엔진(App Engine)을 출시했으며, 수십억 사용자를 대상으로 구글 제품의 A/B 실험을 적용할 수 있게 시스템 규모를 확장시켰고, W3C의 실시간 RSS 피드 표준인 펍섭헙법(PubSubHubbub) 공동 작성자이기도 하며, 오픈 소스 프로젝트에도 여러 가지로 기여했다. 지난 19년간 파이썬 프로 개발자로 전문적으로 파이썬을 사용해왔다. 뉴욕 시(Ney York) 컬럼비아 대학교(Columbia University)에서 컴퓨터 공학(Computer Engineering) 학사(B.S)를 취득했다. 일과 시간 외에 피아노 연주, 서핑, 가족과 함께 시간 보내기를 좋아한다. 현재 캘리포니아에 살고 있다. 온라인 https://onebigfluke.com에서 그를 만날 수 있다.
펼치기
오현석 (옮긴이)    정보 더보기
25년간 현업 개발자로 코드를 개발해 왔으며, 지금은 (주)대동애그테크에서 미래 농업 솔루션을 개발하는 본부를 총괄하고 있다. 『객체에서 함수로』(길벗, 2024), 『코틀린 함수형 프로그래밍』(에이콘, 2023) 등 코틀린 서적을 여러 권 번역했고, 코틀린 외에도 『실전 파이썬 핸즈온 프로젝트』(책만, 2022), 『읽고 나면 진짜 쉬워지는 자료 구조』(길벗, 2024) 등 다양한 프로그래밍 언어와 프로그래밍 기술에 대한 책을 30여 권 번역했으며, 『핵심 코틀린 프로그래밍』(에이콘, 2023) 책을 쓴 저자이기도 하다.
펼치기

책속에서



추천도서

이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책