장바구니 담기 close

장바구니에 상품을 담았습니다.

단단한 파이썬

단단한 파이썬

  • 패트릭비아포어
  • |
  • 에이콘출판
  • |
  • 2022-08-24 출간
  • |
  • 548페이지
  • |
  • 188 X 235 X 25 mm
  • |
  • ISBN 9791161756677
판매가

35,000원

즉시할인가

31,500

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
31,500

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




◈ 이 책에서 다루는 내용 ◈

◆ 개발 생태계에서의 타입의 중요성
◆ 특정 의도 반영을 위한 타입 선택
◆ 확장성 있는 파이썬 만들기
◆ 코드베이스의 견고성 및 안전성 높이기
◆ 유지보수 문제 감지를 위한 코드 평가
◆ 린팅과 테스팅을 통한 코드베이스 안전망 구축

◈ 이 책의 대상 독자 ◈

지속 가능하며 유지 가능한 방식으로 본인의 코드를 발전시키고 싶은 모든 파이썬 개발자를 위한 책이다. 파이썬 프로그래밍 경험이 있어야 하며 파이썬 입문용으로는 적합하지 않다. 파이썬의 제어 흐름과 클래스를 이해하고 있어야 한다.

◈ 이 책의 구성 ◈

이 책은 크게 4부로 구성돼 있다.
제1부, 코드에 타입 어노테이션하기
먼저 파이썬의 타입 어노테이션(type annotation)을 설명한다. 타입은 모든 언어의 기초이지만 세부적으로 다뤄지지 않는 경향이 있다. 한 번 정해진 타입은 매우 구체적인 의도를 전달하기 때문에 중요하다. 타입 어노테이션과 특정 어노테이션(specific annotation)이 개발자에게 어떤 내용을 전달하는지 살펴본다. 또한 타입체커(typechecker)를 살펴보고 이것이 오류를 잡는 데 어떻게 도움이 되는지 알아본다.

제2부, 여러분만의 타입을 정하기
파이썬의 타입을 알아본 후 타입을 어떻게 생성하는지 살펴볼 것이다. 열거형(enumeration), 데이터 클래스 및 클래스를 자세히 다룬다. 그리고 타입 설계 방식 선택이 코드의 견고성에 미치는 영향도 알아본다.

제3부, 확장 가능한 파이썬
의도를 전달하는 법을 배운 뒤, 향후 개발자들이 강력한 기반을 바탕으로 코드를 효과적으로 변경하며 자신 있게 빌드하는 방법을 살펴본다.

제4부, 안전망의 설치
마지막으로 우리는 이후에 인수할 개발자들이 떨어져도 다치지 않을 안전망을 설치하는 방법을 알아본다. 본인의 사례에도 어려움 없이 적용할 수 있는 튼튼한 장치가 있다는 것을 알게 되면 개발자들도 자신감이 올라갈 것이다. 마지막으로 오류 발견에 도움이 되는 다양한 정적 분석 및 테스트 도구를 알아본다.

◈ 옮긴이의 말 ◈

최근 언어들의 트렌드는 타입의 강화 및 체크이다. 자바스크립트의 타입 강화 버전인 타입스크립트의 인기가 높아지고 있는 것이 그 증거다.
타입을 강화하면 코드를 통한 커뮤니케이션이 가능하다. 코드의 의도를 명확하게 파악할 수 있다면 추후 코드 작업 시 들어가는 비용과 노력은 훨씬 줄어들 것이며 이는 유지 보수성의 시발점이다.
파이썬은 3.8 버전 이후로 여러 타입을 지원하기 시작하고 파이썬 커뮤니티에서도 이를 체크할 수 있는 도구들을 제공했지만, 파이썬을 주력으로 쓰는 개발자들 사이에서는 아직 잘 알려지지 않았다. 이 책은 파이썬 코드의 유지보수성 향상을 목표로 한다. 또한 각종 타입 및 클래스의 의미와 사용법, 그리고 이를 체크해주는 도구들을 비롯해 코드 안전망이라고 불리는 각종 테스트까지 총망라해 다룬다. 또한 파이썬 중급 레벨에 필요한 테크닉과 정보를 알려준다.
이 책을 통해 코드를 사용한 커뮤니케이션의 진정한 의미를 알고, 여러분이 만드는 모든 코드의 견고성을 확보하기를 바란다.


목차


1장. 견고한 파이썬
__견고성
____견고성이 중요한 이유
__여러분의 의도는 무엇인가?
____비동기 소통
__파이썬 코드에서 의도의 예시
____컬렉션
____반복 구문
____최소 놀람의 원칙
__마치며

2장. 파이썬 타입의 소개
__타입이란?
____기계적인 표현
____의미적 표현
__타입 시스템
____강한 스펙트럼과 약한 스펙트럼
____동적 타입과 정적 타입
____덕 타이핑
__마치며

3장. 타입 어노테이션
__타입 어노테이션이란?
__타입 어노테이션의 장점
____자동 완성
____타입 체커
____연습: 버그 찾기
__타입 어노테이션은 사용할 때
__마치며

4장. 타입의 제어
__Optional 타입
__Union 타입
____곱 타입과 합 타입
__Literal 타입
__Annotated 타입
__NewType
__Final 타입
__마치며

5장. 컬렉션 타입
__컬렉션의 어노테이션
__동종 컬렉션과 이종 컬렉션
__TypedDict
__새로운 컬렉션 생성
____제네릭
____기존 타입의 변경
____ABC처럼 쉽게
__마치며

6장. 타입 체커의 커스터마이징
__타입 체커의 설정
____mypy의 설정
____mypy 리포트
____mypy를 빠르게
__기타 타입 체커
____Pyre
____Pyright
__마치며

7장. 실용적 타입 체킹
__트레이드오프
__더 빠른 손익 분기
____취약점 찾기
____전략적으로 대상 코드를 잡아라
____도구화에 의존하기
__마치며

8장. 사용자 정의 타입: 열거형
__사용자 정의 타입
__열거형
____Enum
____사용하지 않을 때
__고급 사용법
____자동 변수
____플래그
____정수형 변환
____고유성
__마치며

9장. 사용자 정의 타입: 데이터 클래스
__데이터 클래스의 동작
__사용법
____문자열 변환
____등가 비교
____관계 비교
____불변성
__다른 타입과의 비교
____데이터 클래스와 딕셔너리
____데이터 클래스와 TypedDict
____데이터 클래스와 namedtuple
__마치며

10장. 사용자 정의 타입: 클래스
__클래스 해부
____생성자
__불변 속성
____깨진 불변 속성 피하기
____불변 속성이 이익인 이유
____불변 속성을 통한 커뮤니케이션
____클래스의 소비
____유지 보수자들은 어떻게?
__캡슐화와 불변 속성의 유지 보수
____캡슐화
____데이터 접근의 보호
____운영
__마치며

11장. 사용자 정의 인터페이스
__자연스러운 인터페이스 설계
____사용자처럼 생각하기
__자연스런 상호작용
____자연스런 상호작용의 실제
____매직 메서드
____컨텍스트 매니저
__마치며

12장. 하위 타입
__상속
__치환 가능성
__설계 고려 사항
____합성
__마치며

13장. 프로토콜
__타입 시스템 간의 관계
____타입을 비워두거나 Any로 사용
____Union의 사용
____상속의 사용
____믹스인의 사용
__프로토콜
____프로토콜의 정의
__고급 사용법
____프로토콜의 합성
____런타임 시 체크할 수 있는 프로토콜
____프로토콜을 만족시키는 모듈
__마치며

14장. pydantic으로 런타임 체크
__동적 설정
__pydantic
____유효성 검사 도구
____유효성 검사와 파싱
__마치며

15장. 확장성
__확장성이란?
____재설계
__개방-폐쇄의 원칙
____개방-폐쇄 원칙의 위배
____개방-폐쇄 원칙의 단점
__마치며

16장. 의존성
__관계
__의존성의 유형
____물리적 의존성
____논리적 의존성
____일시적(시간적) 의존성
__의존성의 시각화
____시각화 패키지
____임포트의 시각화
____함수 호출의 시각화
____의존성 그래프의 해석
__마치며

17장. 조합 가능성
__조합 가능성
__정책과 메커니즘
__더 작은 스케일로 구성
____함수의 조합
____데코레이터
__알고리듬의 조합
__마치며

18장. 이벤트 주도 아키텍처
__동작 방식
____단점
__단일 이벤트
____메시지 중개자가 있는 경우
____관찰자 패턴
__이벤트 스트리밍
__마치며

19장. 플러그인
__템플릿 메서드 패턴
__전략 패턴
__플러그인 아키텍처
__마치며

20장. 정적 분석
__린팅
____사용자 정의 Pylint 플러그인 작성
____플러그인의 분해
__기타 정적 분석 도구
____복잡도 분석 도구
____보안 분석
__마치며

21장. 테스트 전략
__테스트 전략의 정의
____테스트란?
__테스트 비용 줄이기
____AAA 테스트
__마치며

22장. 인수 테스트
__행위 주도 개발(BDD)
____걸킨 언어
____실행 가능 사양
__추가적인 behave의 기능
____단계의 파라미터화
____테이블 주도 요구 사항
____단계 매칭
____테스트 수명주기의 사용자화
____테스트의 선별적 수행을 위한 태그 사용
____리포트 생성
__마치며

23장. 속성 기반 테스트
__Hypothesis와 속성 기반 테스트
____Hypothesis의 마법
____기존 테스트와의 비교
__Hypothesis의 최대한 활용
____Hypothesis 전략
____알고리듬 생성
__마치며

24장. 뮤테이션 테스트
__뮤테이션 테스트가란?
__mutmut을 이용한 뮤테이션 테스트
____뮤턴트의 수정
____뮤테이션 테스트 리포트
__뮤테이션 테스트의 적용
____커버리지의 오류(그리고 다른 메트릭)
__마치며

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.