이펙티브 파이썬 (더 명확하고, 더 안전하고, 더 파이썬다운 코드를 작성하는 실전 가이드 125 | 개정판 3 판)

이펙티브 파이썬 (더 명확하고, 더 안전하고, 더 파이썬다운 코드를 작성하는 실전 가이드 125 | 개정판 3 판)

$42.00
Description
125가지 모범 사례로 완성하는 파이썬 코딩의 기술!
AI 코드 시대에도 흔들리지 않는 개발자를 위한 파이썬 설계의 기준!
2015년 1판이 출간된 이후 파이썬 프로그래밍 분야에서 독보적인 존재감을 지켜 온 『이펙티브 파이썬』은 파이썬을 ‘쓸 줄 아는 코드’에서 ‘설계할 줄 아는 코드’로 끌어올리고, 개발자의 역량을 한 단계 확장시키는 실전 지침서다. 실무에서 마주치는 핵심 주제를 함수와 제너레이터, 클래스 설계부터 동시성, 성능 최적화, 테스트까지 총 125개의 구체적이고 실용적인 아이템으로 정리했다. 각 아이템에서는 왜 그 방식이 더 나은지를 명쾌한 논리와 사례로 설명하고, 가독성 · 유지보수성 · 안정성 · 성능을 모두 고려한 설계 원칙을 제시했다. 3판에서는 파이썬 3.13까지의 최신 버전을 기준으로 내용을 전면 개정하고, 새로운 아이템 35개를 추가해 최신 사례를 충실히 반영했으며, 기존 조언 또한 변화해 온 모범 사례를 반영해 대폭 수정했다. 이 책은 AI가 코드를 만드는 현시대에 더 나은 선택을 할 수 있도록 개발자의 역량과 판단 기준을 높여 줄 것이다.
저자

브렛슬라킨

현재구글CTO실의프린시펄(principal)소프트웨어엔지니어로기술전략과빠른프로토타입을개발하고있다.머신러닝과시장조사데이터집합을수집하는구글사내스타트업인구글서베이(Survey)의공동설립자였고,구글의첫번째클라우드컴퓨팅제품인구글앱엔진(AppEngine)을출시했으며,수십억사용자를대상으로구글제품의A/B실험을적용할수있게시스템규모를확장시켰고,W3C의실시간RSS피드표준인펍섭헙법(PubSubHubbub)공동작성자이기도하며,오픈소스프로젝트에도여러가지로기여했다.지난19년간파이썬프로개발자로전문적으로파이썬을사용해왔다.뉴욕시(NeyYork)컬럼비아대학교(ColumbiaUniversity)에서컴퓨터공학(ComputerEngineering)학사(B.S)를취득했다.일과시간외에피아노연주,서핑,가족과함께시간보내기를좋아한다.현재캘리포니아에살고있다.온라인https://onebigfluke.com에서그를만날수있다.

목차

1장파이썬답게생각하기
[아이템1]사용중인파이썬의버전을알아두라
[아이템2]PEP8스타일가이드를따르라
________공백
________명명규약
________표현식과문장
________임포트
________자동화
[아이템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]yieldfrom을사용해여러제너레이터를합성하라
[아이템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를

출판사 서평

파이썬,쓸줄아는코드에서,설계할줄아는코드로!

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

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

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


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

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

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

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

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

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

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

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