길벗·이지톡

도서 IT전문서/IT입문서 프로그래밍/오픈소스

파이썬 설계 철학까지 이해하는 파이썬 코딩의 기술 실전편 51!

지금보다 더 나은 프로그래머가 되고 싶은, 모든 파이썬 개발자를 위한, 파이썬 전문가 가이드!


 

파이썬 코딩에는 파이썬 다운 기술이 필요하다! 저자는 25년간 열정적으로 파이썬을 사랑하고 사용해오면서 자신의 코드 및 실제 현업 코드에서 파이썬 개발자들이 쉽게 빠지는 잘못, 함정, 오류들을 발견해 왔다. 이 책은 그 중 51가지를 선별해 관련된 개념끼리 묶어서 총 9개 장으로 소개한다. 각 장과 절의 내용은 서로 독립적으로 구성하여 그때그때 필요한 부분만 참고할 수 있게 했다. 또한, 실제 프로젝트 상황 및 간결하고 명확한 예제를 제시해 문제와 솔루션을 깊이 이해하고, 문제에 대해 올바르게 사고하는 방법을 설명하려고 노력했다. 문제와 솔루션을 이해하는 과정에서 파이썬의 설계 철학과 파이썬이 추구하는 가치를 다시 한번 상기하고, 파이썬의 잠재력을 끌어올리는 프로그래밍 기법을 배우고, 궁극적으로 파이썬 코드의 질을 한 단계 향상시킬 수 있을 것이다.

 

목차

1장 잘못된 방식으로 순환하기

__1.1 (드물지만) 순환을 위해 목록 생성하기

__1.2 색인을 순환하는 대신 enumerate( ) 사용하기

__1.3 dict.items( )가 필요할 경우 dict.keys( )로 순환하지 않기

__1.4 순환 중 객체 변형

__1.5 while 순환보다 for 순환 사용하기

__1.6 ‘순환과 절반’을 위한 바다코끼리 연산자

__1.7 zip( )으로 다중 반복 가능 객체 간소화하기

__1.8 zip(strict=True)과 itertools.zip_longest( )

__1.9 정리

 

 

2장 동등성과 동일성의 혼동

__2.1 클로저의 늦은 연결

__2.2 불리언 논리 값에 대한 지나친 검증

__2.3 x == None 비교하기

__2.4 가변 기본 매개 변수에 대한 오해

____2.4.1 첫 번째 방법, 클래스 사용하기

____2.4.2 두 번째 방법, None 보초 값 사용하기

____2.4.3 세 번째 방법, 상태 생성기의 이점 이용하기

__2.5 가변 객체에 대한 복사 대 참조

__2.6 (재사용이 있는 상황에서) is와 == 혼동하기

__2.7 정리

 

 

3장 파이썬의 여러 가지 함정

__3.1 이름 지정

____3.1.1 표준 라이브러리 모듈과 동일한 파일 이름 사용하기

____3.1.2 import * 사용 피하기

____3.1.3 비어 있거나 지나치게 일반적인 except 문

__3.2 단순 문자열 연결의 2차 시간 복잡도

__3.3 파일을 열 때 상황 정보 관리자 사용하기

____3.3.1 첫 번째 위험

____3.3.2 두 번째 위험

____3.3.3 취약성 수정하기

__3.4 .sort( )와 sorted( )의 선택적 매개 변수 key

__3.5 불확실한 키에는 dict.get( ) 사용하기

__3.6 정리

 

 

4장 파이썬 고급 활용

__4.1 type(x) == type(y) 비교하기

__4.2 (다시 한번) 이름 지정

____4.2.1 내장 이름의 재정의

____4.2.2 보호된 속성에 직접 접근하기

__4.3 사용 빈도가 낮은 기능에 주목하기

____4.3.1 f 문자열 디버깅

____4.3.2 가공자의 우아한 마법

____4.3.3 itertools (충분히) 사용하기

____4.3.4 more-itertools 제3자 라이브러리

__4.4 자료형 주석은 실행 시간 자료형이 아니다

____4.4.1 자료형 주석은 실행 시간 제약이 아니다

____4.4.2 typing.NewType()을 실행 시간 자료형으로 오해하기

__4.5 정리

 

 

5장 할 수 있다고 해서 해야 한다는 뜻은 아니다

__5.1 메타클래스

__5.2 원숭이 패치

__5.3 읽기 메서드와 설정 메서드

__5.4 허락보다 용서받는 것이 더 쉽다

__5.5 구조적 패턴 대조

__5.6 정규 표현식과 재앙적 역추적

__5.7 정리

 

 

6장 적절한 데이터 구조 선택하기

__6.1 collections.defaultdict

__6.2 collections.Counter

____6.2.1 해결책

____6.2.2 잘못

__6.3 collections.deque

____6.3.1 해결책

____6.3.2 잘못

__6.4 collections.ChainMap

____6.4.1 해결책

____6.4.2 잘못

__6.5 데이터 클래스와 명명된 튜플

____6.5.1 명명된 튜플 사용하기

____6.5.2 정적과 동적

____6.5.3 데이터 클래스

__6.6 효과적인 구상 연속 순서열

__6.7 정리

 

 

7장 데이터 구조의 잘못된 사용

__7.1 반복된 목록 탐색의 2차 시간 복잡도

__7.2 목록 중간에서 요소를 제거하거나 추가하기

____7.2.1 좀 더 효율적인 데이터 구조

__7.3 문자열은 문자열의 반복 가능한 객체 집합

__7.4 상수를 사용하는 대신 enum을 (자주) 사용하기

__7.5 많이 알려지지 않은 사전 메서드 익히기

____7.5.1 객체를 정의하는 사전

____7.5.2 정기적으로 발생하는 잘못으로 돌아가기

__7.6 JSON과 파이썬은 서로 깔끔하게 변환되지 않는다

____7.6.1 JSON에 대한 몇 가지 배경

____7.6.2 왕복에 실패하는 데이터

__7.7 자신만의 데이터 구조 만들기

____7.7.1 자신만의 것을 만드는 것이 나쁜 생각일 때

____7.7.2 자신만의 것을 만드는 것이 좋은 생각일 때

____7.7.3 핵심 요약

__7.8 정리

 

 

8장 보안

__8.1 무작위성의 종류

____8.1.1 암호학적 무작위성을 위해 secrets 사용하기

____8.1.2 재현 가능한 무작위 분포

__8.2 ‘안전한’ 소스 코드에 비밀번호나 기타 비밀 정보 넣기

__8.3 ‘자신만의’ 보안 기제 만들기

__8.4 마이크로 서비스에 SSL/TLS 사용하기

__8.5 제3자 라이브러리 requests 사용하기

__8.6 데이터베이스 API를 사용하지 않을 경우의 SQL 주입 공격

__8.7 안전하다는 가정을 확인하기 위해 assert 사용하지 않기

__8.8 정리

 

 

9장 파이썬에서의 수치 계산

__9.1 IEEE-754 부동 소수점 숫자 이해하기

____9.1.1 NaN(그리고 다른 부동 소수점 숫자)을 비교하기

____9.1.2 NaN과 statistics.median()

____9.1.3 부동 소수점 숫자의 순진한 사용: 결합법칙과 분배법칙

____9.1.4 부동 소수점 숫자의 순진한 사용: 입자성

__9.2 숫자 자료형

____9.2.1 금융 계산에 부동 소수점 숫자를 사용하지 않기

____9.2.2 수치 데이터 자료형의 비직관적인 동작

__9.3 정리

 

 

부록 다른 책에서 읽을 만한 주제

__A.1 테스트 주도 개발

__A.2 동시성

__A.3 패키징

__A.4 자료형 검사

__A.5 수치 및 데이터프레임 라이브러리

 

 

찾아보기

파이썬 코딩의 기술 51가지 찾아보기

 

더보기접기

저자&기여자

ㆍ지은이 데이비드 메르츠

소개
25년이라는 오랜 시간 동안 파이썬 커뮤니티의 일원으로 활동하고 있으며, 파이썬 언어의 발전을 밀접하게 따라오면서 버전별 변경 사항에 대해 기조 강연을 하고, 프로그래밍 초보자, 다른 언어 기반의 개발자, 데이터 과학자에게 파이썬을 가르쳤습니다. 개발자와 데이터 과학자에게 기계 학습과 과학 컴퓨팅을 교육하는 KDM Training의 설립자로, Anaconda Inc.를 위한 데이터 과학 교육 프로그램을 만들었으며 수석 교육자로 활동하였습니다. 깊은 신경망(deep neural network)의 등장과 함께 로봇 지배자를 교육하는 데도 눈을 돌려 D.E. Shaw Research에서 8년 동안 근무했습니다. 6년 동안 PSF의 이사로 활동했으며, 지금도 PSF의 상표 위원회와 과학 파이썬 작업 그룹의 공동 의장을 맡고 있습니다. 2000년대에 쓴 '매력적인 파이썬(Charming Python)'과 'XML 문제(XML matters)' 칼럼은 파이썬 세계에서 가장 널리 읽힌 글입니다. 팩트(Packt), 오라일리(O'Reilly), 애디슨 웨슬리(Addison-Wesley)를 통해 집필서를 출간했으며, 여러 국제 프로그래밍 회의에서 기조연설을 했습니다. 저서: https://gnosis.cx/publish/resumes/david-mertz-publications.pdf 이력: https://gnosis.cx/publish/resumes/david-mertz-resume.pdf

ㆍ옮긴이 김진호

소개
25년 차 소프트웨어 개발자로서 싸이월드, 티맵 등의 모바일 솔루션을 개발했다. 또한 사우디아라비아 등 중동의 여러 국가, 인도네시아, 멕시코 등의 은행 결제 시스템을 개발했다. 이후 K-POP, 블록체인, 정보 관리 등 다양한 스타트업과 중견 기업에서 CTO, 개발이사 등을 역임한 바 있다. 저서로는 『실전 안드로이드 프로그래밍』(케이엔피 IT, 2011), 『갤럭시 S & 안드로이드폰 완전정복』(이비락, 2010), 『갤럭시S 안드로이드폰 어플 활용 백서』(글로벌, 2010), 『입문자를 위한 Windows CE Programming』(가남사, 2002) 등이 있으며, 번역서로는 『디자인 패턴의 아름다움』(제이펍, 2023)이 있다.

보도자료

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.