000 | 00000cam c2200205 c 4500 | |
001 | 000046141309 | |
005 | 20230210152818 | |
007 | ta | |
008 | 230210s2022 ggka 001c kor | |
020 | ▼a 9791189909451 ▼g 93000 | |
035 | ▼a (KERIS)BIB000016380995 | |
040 | ▼a 011001 ▼c 011001 ▼d 211009 | |
041 | 1 | ▼a kor ▼h eng |
082 | 0 0 | ▼a 005.13/3 ▼2 23 |
085 | ▼a 005.133 ▼2 DDCK | |
090 | ▼a 005.133 ▼b P999 2022z76 | |
100 | 1 | ▼a Sweigart, Al ▼0 AUTH(211009)139372 |
245 | 1 0 | ▼a 클린 코드, 이제는 파이썬이다 : ▼b 한 권으로 읽는 파이썬 개발자 성장 프로젝트 / ▼d 알 스웨이가트 지음 ; ▼e 박재호, ▼e 김동현 옮김 |
246 | 1 9 | ▼a Beyond the basic stuff with Python : ▼b best practices for writing clean code |
260 | ▼a 안양 : ▼b 책만, ▼c 2022 | |
300 | ▼a 439 p. : ▼b 삽화 ; ▼c 24 cm | |
500 | ▼a 색인수록 | |
650 | 0 | ▼a Python (Computer program language) |
650 | 0 | ▼a Computer programming |
700 | 1 | ▼a 박재호, ▼e 역 |
700 | 1 | ▼a 김동현, ▼e 역 |
900 | 1 0 | ▼a 스웨이가트, 알, ▼e 저 |
945 | ▼a ITMT |
소장정보
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.133 P999 2022z76 | 등록번호 111876443 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
책소개
단순히 파이썬 구문을 깊이 다루는 선에서 그치지 않고, 명령행, 코드 포매터, 린터, 버전 관리 등 전문 개발자가 사용하는 명령행 도구에 대해 다양하게 설명한다. 무엇이 코드의 가독성을 높이고 어떻게 하면 제대로 클린 코드를 작성할 수 있는지 설명했으며, 프로그래밍 프로젝트 몇 가지를 수행하면서 이런 원리가 실제 소프트웨어에 어떻게 적용되는지 확인해볼 수 있다. 이 책이 컴퓨터 과학 교과서는 아니지만, 빅오 알고리즘 분석과 객체 지향 설계에 대한 주제도 다룬다.
가독성 높으며 유지 보수와 기능 확장이 쉬운 파이썬 코드를 원하는가? 기초적인 파이썬 프로그래밍 문법이나 튜토리얼을 끝냈다면, 유능하고 자신감 넘치는 소프트웨어 개발자가 되기 위한 다음 단계는 무엇일까?
노련한 프로그래머의 유쾌한 경험과 진솔한 노하우를 한 권에 담아낸, 현업에서 즉시 적용할 수 있는 파이썬 클린 코드의 모든 것!
파이썬 개발자의 성장과 업그레이드를 위한 실무 프로그래밍 지식 총정리!
| 이 책에서 다루는 내용 |
● 코딩 스타일을 비롯해, 파이썬의 블랙 자동 포매팅 도구를 활용한 클린 코드 작성법
● 일반적인 버그의 원인 파악과 정적 분석기를 활용한 버그 감지
● 쿠키커터 템플릿 도구로 코드 프로젝트의 파일 구조를 짜는 법
● 람다 등 고차 함수의 함수형 프로그래밍 기법
● 파이썬의 내장 timeit과 cProfile 모듈로 코드 속도 프로파일링
● 주석과 독스트링을 유용한 정보로 만드는 방법 그리고 작성 주기
| 이 책의 구성 |
이 책은 단순히 파이썬 구문을 깊이 다루는 선에서 그치지 않고, 명령행, 코드 포매터, 린터, 버전 관리 등 전문 개발자가 사용하는 명령행 도구에 대해 다양하게 설명한다. 무엇이 코드의 가독성을 높이고 어떻게 하면 제대로 클린 코드를 작성할 수 있는지 설명했으며, 프로그래밍 프로젝트 몇 가지를 수행하면서 이런 원리가 실제 소프트웨어에 어떻게 적용되는지 확인해볼 수 있다. 이 책이 컴퓨터 과학 교과서는 아니지만, 빅오 알고리즘 분석과 객체 지향 설계에 대한 주제도 다룬다.
[1부] 준비
1장 에러 메시지 파악과 고수의 도움을 받기 위한 질문 에티켓
남들에게 효과적으로 질문하고 스스로 필요한 답을 찾는 방법을 보여준다. 또한 에러 메시지를 읽는 법과 온라인으로 도움을 요청하는 예절도 알려준다.
2장 환경 설정과 명령행 사용 방법
개발 환경을 준비하고 PATH 환경 변수를 설정하는 내용과 함께 명령행 탐색 방법을 살펴본다.
[2부] 클린 코드를 위한 모범 사례, 도구, 기법
3장 코딩 스타일 정립과 코드 포매팅 자동화
PEP 8 스타일 가이드와 가독성을 높이는 코드 포맷에 대해 살펴본다. 코드 포매팅 도구인 블랙을 사용해 이 과정을 자동화하는 방법도 배운다.
4장 이해하기 쉬운 이름
코드 가독성을 개선할 수 있게 변수와 함수의 이름을 짓는 법을 알아본다.
5장 코드 악취 감지와 대응
코드에 버그가 있을지도 모른다고 알려주는 몇 가지 잠재적인 경고 신호를 다룬다.
6장 파이썬다운 코드를 작성하는 법
파이썬 코드를 작성하는 몇 가지 관례와 파이썬다운 코드를 만드는 방법을 살펴본다.
7장 파이썬 세상의 프로그래밍 용어
프로그래밍 분야에서 사용되는 전문 용어와 자주 혼동되는 용어에 관해 알아본다.
8장 파이썬에서 빠지기 쉬운 함정들
파이썬 언어에서 자주 나오는 혼동과 버그의 원인, 해결방법, 그리고 이를 회피할 코딩 전략을 다룬다.
9장 파이썬의 기이한 특징들
스트링 인터닝과 반중력 이스터에그 등 여러분이 미처 알지 못한 파이썬 언어의 기이한 기능들을 다룬다. 어떤 데이터 타입과 연산자가 왜 이렇게 예상치 못한 행동을 초래하는지 파악한다면 파이썬의 작동 방식에 대한 이해도가 좀 더 깊어질 것이다.
10장 파이썬다운 함수 만들기
함수를 구조화해서 유용성과 가독성을 극대화하는 방법을 알아본다. *와 ** 인수 구문, 큰 함수와 작은 함수의 장단점, 람다 함수 등 함수형 프로그래밍 기법을 배워본다.
11장 주석과 타입 힌트
프로그램에서 비코드부의 중요성과 유지보수에 미치는 영향을 다룬다. 주석과 독스트링을 얼마나 자주 써야 하는지, 어떻게 하면 유용한 정보를 담을 수 있는지를 설명한다. 이 장에서는 타입 힌트와 마이파이MyPy 같은 정적 분석기를 사용해 버그를 탐지하는 방법도 알아본다.
12장 깃을 이용한 코드 관리 기법
깃 버전 관리 도구를 사용해 소스 코드 변경 이력을 기록하고 이전 버전의 작업을 복구하거나 버그가 처음 나타났을 때를 추적하는 법을 알아본다. 또한 쿠키커터 도구로 코드 프로젝트의 파일을 구성하는 방법도 다룬다.
13장 빅오를 활용한 알고리즘 성능 분석과 개선
timeit과 cProfile 모듈을 사용해 코드의 속도를 객관적으로 측정하는 방법을 알아본다. 또한 처리해야 하는 데이터의 양이 증가함에 따라 코드의 성능이 얼마나 느려지지를 빅오 알고리즘 분석을 활용해 예측하는 방법도 다룬다.
14장 실전 프로젝트: 하노이 탑과 사목 게임
명령행 게임 두 가지를 작성하며 지금까지 배운 기법을 적용해본다. 한 탑에서 다른 탑으로 원판을 옮기는 퍼즐 게임인 ‘하노이 탑’과 유서 깊은 2인용 말판 게임인 ‘사목’이다.
[3부] 파이썬과 객체지향 프로그래밍
15장 틱택토 게임으로 배우는 객체지향 프로그래밍과 클래스
종종 오인되는 객체 지향 프로그래밍(OOP)의 역할을 정의한다. 남들도 다한다고 생각하기 때문인지 많은 개발자가 자신의 코드에 OOP 기법을 남용하는데, 이는 소스 코드를 복잡하게 만드는 주요 원인이 된다. 이 장에서는 클래스 작성법도 알려주지만, 클래스를 사용해야 하는 이유와 사용하지 말아야 하는 이유를 알려준다는 점이 더 중요하다.
16장 코드 복제는 이제 그만! 상속으로 해결하기
클래스 상속과 그것이 코드 재사용에 얼마나 유용한지를 알아본다.
17장 파이썬다운 객체지향 프로그래밍
프로퍼티, 이중밑줄 메소드, 연산자 오버로드 같은 파이썬 특유의 객체 지향 설계 특징을 다룬다.
정보제공 :

저자소개
알 스웨이가트(지은이)
시애틀에 거주하는 소프트웨어 개발자이자 기술서 저자다. 프로그래밍 언어 가운데 파이썬을 가장 좋아해서 파이썬용 오픈 소스 모듈을 여럿 개발했다. 직접 집필한 모든 책을 크리에이티브 커먼즈 라이선스하에 웹사이트(https://www.inventwithpython.com/)에서 무료로 읽을 수 있도록 공개해뒀다.
박재호(옮긴이)
포항공과대학교 컴퓨터공학과 학부와 대학원을 졸업했다. 임베디드 시스템 개발, 기업용 백업 소프트웨어 개발, 방송국 콘텐츠 수신제한 시스템 개발과 운영 지원, 클라우드에서 동작하는 서비스 개발에 이르기까지 다양한 실무 경험을 토대로 고성능 고가용성 시스템을 설계하고 있다. 코스닥 상장사인 엑셈 CTO로 인공지능과 스마트팩토리 관련 개발을 총괄했으며, 클라우드용 모니터링 시스템을 위한 아키텍처 설계도 주도했다. 『마이크로서비스 도입, 이렇게 한다』(책만, 2021), 『Clean Code 클린 코드』(인사이트, 2013), 『피플웨어』(인사이트, 2014) 번역, 『엘라스틱 스택 개발부터 운영까지』(책만, 2021) 감수 등 번역·감수하거나 집필한 책이 40여 권이 넘는다. 각종 기술 소식을 다루는 블로그 ‘컴퓨터 vs 책’(https://jhrogue.blogspot.com/)과 개발자를 위한 유튜브 ‘채널 박재호’(https://www.youtube.com/c/박재호dev)를 운영하며, 개발자들을 위한 각종 교육과 세미나도 지속적으로 진행하고 있다.
김동현(옮긴이)
연세대 컴퓨터공학 학·석사를 졸업하고 네이버 검색 부서와 현대자동차 AIRS 컴퍼니에서 백엔드 서빙을 전문적으로 다루고 있다. 검색/추천의 전문성 키워드 아래에 현재 컨테이너 기반 파이썬/Golang 위주의 개발 프로젝트를 주도하고 있으며 이따금씩 후학 개발자들을 위해 따로 멘토링을 제공한다.

목차
[1부] 준비 1장 에러 메시지 파악과 고수의 도움을 받기 위한 질문 에티켓 __파이썬 에러 메시지를 읽는 법 ____추적정보 조사 ____에러 메시지 검색 __린터를 활용한 에러 방지 __프로그래밍 조언을 구하는 방법 ____미리 충분한 정보를 제공해 불필요한 커뮤니케이션을 줄이자 ____물음표가 붙은 질문 형식으로 문장을 서술하자 ____적절한 웹사이트를 찾아 질문하자 ____질문을 요약한 표제를 달자 ____코드로 어떤 일을 하고 싶은지를 설명하자 ____전체 에러 메시지를 제공하자 ____전체 코드를 공유하자 ____적절한 포매팅으로 코드를 읽기 쉽게 만들자 ____사람들에게 여러분이 무엇을 시도했는지를 알리자 ____여러분의 설정 사항을 공유하자 __좋은 질문의 예시 __정리 2장 환경 설정과 명령행 사용 방법 __파일시스템 ____파이썬의 경로 ____홈 디렉터리 ____현재 작업 디렉터리 ____절대 경로 vs 상대 경로 __프로그램과 프로세스 __명령행 ____터미널 창 열기 ____명령행에서 프로그램을 실행하는 방법 ____명령행 인수 ____명령행에서 -c 옵션으로 파이썬 코드를 실행하는 방법 ____명령행 프로그램에서 파이썬 프로그램 실행 ____py.exe 프로그램 실행 ____파이썬 프로그램에서 명령어 실행 ____타이핑을 최소화하는 탭 완성 기능 ____명령어 이력 보기 ____필수 명령어 모음 __환경 변수와 PATH ____환경 변수 보기 ____PATH 환경 변수를 이용한 작업 ____명령행의 PATH 환경 변수 바꾸기 ____폴더를 영구적으로 PATH에 추가: 윈도우 환경 ____폴더를 영구적으로 PATH에 추가: 맥OS와 리눅스 환경 __명령행을 쓰지 않고 파이썬 프로그램을 실행하는 방법 ____윈도우 환경 ____맥OS 환경 ____우분투 리눅스 환경 __정리 [2부] 클린 코드를 위한 모범 사례, 도구, 기법 3장 코딩 스타일 정립과 코드 포매팅 자동화 __동료나 협업자의 신뢰를 잃는 이유 __스타일 가이드와 PEP 8 __가로 간격 ____들여쓰기를 위한 공백 문자 사용 ____코드 행 내의 공백 활용 __세로 간격 ____세로 간격의 사용 예 ____세로 간격의 모범 사례 __엄격한 코드 포매터, 블랙 ____블랙 도구 설치 방법 ____명령행에서 블랙을 실행하는 방법 ____코드 특정 부분에 대한 블랙 비활성화 __정리 4장 이해하기 쉬운 이름 __대소문자 표기법 __PEP 8의 명명 규약 __이름의 적정 길이 ____너무 짧은 이름 ____너무 긴 이름 __검색 가능한 이름 짓기 __농담, 말장난, 문화적 참조는 피하자 __내장 이름 덮어쓰기 금지 __역대 최악의 변수명 __정리 5장 코드 악취 감지와 대응 __중복된 코드 __매직 넘버 __주석 처리된 코드와 죽은 코드 __디버깅 출력 __숫자 접미사가 붙은 변수 __그냥 함수나 모듈이어야 하는 클래스 __중첩된 리스트 컴프리헨션 __빈 예외처리 블록과 부실한 에러 메시지 __코드 악취에 관한 잘못된 통념 ____함수 마지막에는 return 문이 하나만 있어야 한다? ____함수에는 try 문이 둘 이상 있으면 안 된다? ____플래그 인수는 나쁘다? ____전역 변수는 나쁘다? ____주석은 불필요하다? __정리 6장 파이썬다운 코드를 작성하는 법 __파이썬의 선(禪) __의미 있는 들여쓰기 __흔히 잘못 사용되는 구문 ____range()보다는 enumerate()를 사용하자 ____open()과 close()보다는 with 문을 사용하자 ____== 대신 is를 써서 None과 비교하자 __문자열 포매팅 ____문자열에 백슬래시가 많은 경우에는 원시 문자열을 사용하자 ____f-문자열을 사용한 문자열 포매팅 __리스트의 얕은 사본 만들기 __파이썬다운 딕셔너리 사용법 ____딕셔너리에서 get()과 setdefault()를 사용하자 ____기본값을 위해 collections.defaultdict를 사용하자 ____switch 문 대신 딕셔너리를 사용하자 __조건식: 파이썬의 ''보기 흉한'' 3항 연산자 __변수값 작업 ____체이닝 할당과 비교 연산자 ____변수가 여러 값 중 하나인지 여부 확인 __정리 7장 파이썬 세상의 프로그래밍 용어 __각종 용어 정의 ____프로그래밍 언어로서 파이썬 vs 인터프리터로서 파이썬 ____가비지 컬렉션 ____리터럴 ____키워드 ____객체, 값, 인스턴스, 아이디 ____아이템 ____가변 데이터 타입, 불변 데이터 타입 ____인덱스, 키, 해시 ____컨테이너, 시퀀스, 매핑, 집합 타입 ____이중밑줄 메소드, 매직 메소드 ____모듈, 패키지 ____호출가능 객체, 일급 객체 __흔히 혼동되어 사용되는 용어 ____문 vs 표현식 ____블록 vs 절 vs 바디 ____변수 vs 속성 ____함수 vs 메소드 ____반복가능 객체 vs 반복자 ____구문 에러 vs 런타임 에러 vs 의미 에러 ____파라미터 vs 인수 ____타입 강제변환 vs 타입 캐스팅 ____프로퍼티 vs 속성 ____바이트코드 vs 기계어 코드 ____스크립트 vs 프로그램, 스크립트 언어 vs 프로그래밍 언어 ____라이브러리 vs 프레임워크 vs SDK vs 엔진 vs API __정리 __추가 정보 8장 파이썬에서 빠지기 쉬운 함정들 __루프문 진행 중에는 리스트에서 아이템을 추가/삭제하지 말자 __copy.copy()나 copy.deepcopy() 없이 가변 값을 복사하지 말자 __기본 인수에 가변 객체는 사용하지 말자 __문자열을 문자열 연결로 생성하지 말자 __sort()가 알파벳 순으로 정렬하리라 기대하지는 말자 __부동소수가 완벽히 정확할 거라고 가정하지 말자 __부등 연산자 !=를 연달아 쓰지 말자 __단일 아이템 튜플에서는 쉼표를 잊지 말자 __정리 9장 파이썬의 기이한 특징들 __256 is 256은 참이지만 257 is 257은 참이 아닌 이유 __문자열 인터닝 __파이썬의 가짜 증감연산자 __아무것도 없으면 참인 all() __부울값은 정수값이다 __다중 연산자 연달아 쓰기 __파이썬의 antigravity기능 __정리 10장 파이썬다운 함수 만들기 __함수명 __함수 크기의 트레이드오프 __함수 파라미터와 인수 ____기본 인수 ____*와 **를 사용해 함수에 인수 전달하기 ____*를 사용해 가변인수 함수 만들기 ____**를 사용해 가변인수 함수 만들기 ____*와 **로 래퍼 함수 만들기 __함수형 프로그래밍 ____부수효과 ____고차원 함수 ____람다 함수 ____리스트 컴프리헨션을 이용한 매핑과 필터링 __결괏값은 항상 동일한 데이터 타입이어야 한다 __예외 발생시키기 vs 에러 코드 반환하기 __정리 11장 주석과 타입 힌트 __주석 ____주석 스타일 ____인라인 주석 ____설명 주석 ____요약 주석 ____경험 지식을 담은 주석 ____법무 정보를 담은 주석 ____전문적인 주석 ____코드태그와 TODO 주석 ____매직 주석과 소스 파일 인코딩 __독스트링 __타입 힌트 ____정적 분석 도구 사용 ____타입 힌트를 다중 타입으로 설정하기 ____리스트, 딕셔너리 등을 위한 타입 힌트 설정 ____주석을 활용한 타입 힌트 백포팅 __정리 12장 깃을 이용한 코드 관리 기법 __깃 커밋과 리포 __쿠키커터 패키지를 이용한 새로운 파이썬 프로젝트 생성 __깃 설치 ____깃 사용자 이름과 이메일 설정 ____GUI 깃 도구 설치하기 __깃 워크플로 ____깃이 파일 상태를 관리하는 방식 ____파일을 스테이징 상태로 바꿔야 하는 이유 __자신의 컴퓨터에 깃 리포 만들기 ____깃으로 파일을 추가해 관리하기 ____리포의 특정 파일 무시하기 ____변경사항 커밋 ____리포에서 파일 삭제하기 ____리포에서 파일 이름 변경과 이동 __커밋 로그 보기 __기존 변경 내역으로 복구하기 ____커밋되지 않은 로컬 변경사항 취소하기 ____스테이징된 파일을 스테이징 상태에서 해제하기 ____가장 최근 커밋 롤백하기 ____단일 파일을 특정 커밋으로 롤백하기 ____커밋 이력 재작성하기 __깃허브와 git push 명령어 ____기존 저장소를 깃허브에 푸시하기 ____기존 깃허브 리포에서 리포 복제하기 __정리 13장 빅오를 활용한 알고리즘 성능 분석과 개선 __timeit 모듈 __cProfile 프로파일러 __빅오 알고리즘 분석 __빅오 차수 ____책장 정리 사례를 이용한 빅오 차수의 이해 ____최악의 시나리오를 측정하는 빅오 __코드의 빅오 차수를 파악해보자 ____낮은 차수와 계수를 우리가 무시하는 이유 ____빅오 분석 예제 ____일반적인 함수 호출의 빅오 차수 ____한눈에 분석하는 빅오 ____n이 작을 경우 빅오는 의미가 없으며, n은 일반적으로 작다 __정리 14장 실전 프로젝트: 하노이 탑과 사목 게임 __하노이 탑 게임 프로젝트 ____화면 출력 내용 ____소스 코드 ____코드 작성 __사목 게임 프로젝트 ____화면 출력 내용 ____소스 코드 ____코드 작성 __정리 [3부] 파이썬과 객체지향 프로그래밍 15장 틱택토 게임으로 배우는 객체지향 프로그래밍과 클래스 __실세계 비유: 온라인 양식 기입 __클래스에서 객체 생성하기 __WizCoin이라는 간단한 클래스 생성하기 ____메소드, __init__(), self ____속성 ____프라이빗 속성과 프라이빗 메소드 __type() 함수와 __qualname__ 속성 __객체지향 vs 비 객체지향 방식의 프로그램 비교: 틱택토 게임 __실세계를 위한 클래스 설계는 어렵다 __정리 16장 코드 복제는 이제 그만! 상속으로 해결하기 __상속의 작동 방식 ____메소드 오버라이드 ____super() 함수 ____상속보다는 합성을 ____상속의 단점 __isinstance()와 issubclass() 함수 __클래스 메소드 __클래스 속성 __정적 메소드 __클래스와 정적 객체지향 기능을 사용할 때 __객체지향과 관련된 전문 용어들 ____캡슐화 ____다형성 __상속을 사용하지 않아야 할 경우 __다중 상속 __메소드 결정 순서 __정리 17장 파이썬다운 객체지향 프로그래밍 __프로퍼티 ____속성을 프로퍼티로 바꾸기 ____데이터 검증을 위한 setter 사용 ____읽기 전용 프로퍼티 ____프로퍼티를 사용할 시점 __파이썬의 이중밑줄 메소드 ____문자열 표현 이중밑줄 메소드 ____숫자 이중밑줄 메소드 ____거울 숫자 이중밑줄 메소드 ____제자리 바꿔치기 증강 대입 이중밑줄 메소드 ____비교 이중밑줄 메소드 __정리