본문 바로가기
+ 펴낸 책

클린 코드, 이제는 파이썬이다

by 책만 2022. 8. 4.

클린 코드, 이제는 파이썬이다 

한 권으로 읽는 파이썬 개발자 성장 프로젝트

알 스웨이가트 지음 | 박재호, 김동현 옮김
440쪽 | 30,000원 | 2022년 8월 16일 출간 | 185*240*21 | ISBN13 9791189909451

 

판매처 | [교보문고] [YES24] [알라딘] [인터파크] + 전국 교보문고 매장

전자책판매처 | [교보문고] [YES24] [리디북스] [알라딘] ISBN 9791189909482 | PDF 포맷 | (10월 14일 출간)


* 원서:Beyond the Basic Stuff with Python: Best Practices for Writing Clean Code

 

★ 정오표: https://www.onlybook.co.kr/entry/clean-python-errata

 소스코드 다운로드 - 14, 15, 16장 예제 (2023년 10월 30일 수정버전)

clean_python_source_code_v2.zip
0.01MB

 

 

✔ 파이썬 개발자 업그레이드를 위한 실무 프로그래밍 지식

 

✔  기초적인 파이썬 프로그래밍 튜토리얼을 끝냈다면, 

유능하고 자신감 넘치는 소프트웨어 개발자가 되기 위한 다음 단계는 무엇일까?

 

가독성 높으며 유지 보수와 기능 확장이 쉬운 파이썬 코드를 원하는가?
 현업에서 즉시 적용할 수 있는 파이썬 클린 코드의 모든 것!

 

★ 역자 박재호 님이 직강한 유데미X책만 개발자 북클럽 영상 

역자와 함께 차근차근 책을 읽으며 궁금한 점까지 시원하게 해결할 수 있다!

https://youtube.com/playlist?list=PLdntWJk2tJPLtfsXHke6RslC1SPxF0qxT 

 

클린 코드 이제는 파이썬이다 북클럽

[유데미 x 책만] 8주 동안 디스코드에서 진행하고 있는 "클린 코드 이제는 파이썬이다" 북클럽 진행을 위해 매주 올려드린 영상을 공개합니다.

www.youtube.com

[1회] 1장, 에러 다루기와 도움 청하기 / 2장, 환경 설정과 명령행 https://youtu.be/eFBPC7nTNyY

[2회] 3장, 코딩 스타일 정립과 코드 포매팅 자동화 / 4장, 이해하기 쉬운 이름 https://youtu.be/B5K2cMKC4-I
[3회] 5장, 코드 악취 감지와 대응 / 6장, 파이썬다운 코드를 작성하는 법 https://youtu.be/Co_RHwKXZQ4
[4회] 7장, 파이썬 세상의 프로그래밍 용어 / 8장, 파이썬에서 빠지기 쉬운 함정들 https://youtu.be/Ml2U6ONR_FA
[5회] 9장, 파이썬의 기이한 특징들 / 10장, 파이썬다운 함수 만들기 https://youtu.be/Og6ZD__YCAI
[6회] 11장, 주석과 타입 힌트 / 12장, 깃을 이용한 코드 관리 기법 https://youtu.be/9a-Dye4KcxU
[7회] 13장, 빅오를 활용한 알고리즘 성능 분석과 개선 / 14장, 실전 프로젝트: 하노이 탑과 사목 게임 https://youtu.be/1v5uyK_f1Cg
[8회] 15장 틱택토 게임으로 배우는 객체지향 프로그래밍과 클래스 / 16장 코드 복제는 이제 그만! 상속으로 해결하기 / 17장, 파이썬다운 객체지향 프로그래밍 https://youtu.be/qpptrCXK-m0

| 이 책에서 다루는 내용 | 

● 코딩 스타일을 비롯해, 파이썬의 블랙 자동 포매팅 도구를 활용한 클린 코드 작성법
● 일반적인 버그의 원인 파악과 정적 분석기를 활용한 버그 감지
● 쿠키커터 템플릿 도구로 코드 프로젝트의 파일 구조를 짜는 법
● 람다 등 고차 함수의 함수형 프로그래밍 기법
● 파이썬의 내장 timeit과 cProfile 모듈로 코드 속도 프로파일링
● 주석과 독스트링을 유용한 정보로 만드는 방법 그리고 작성 주기

기초적인 파이썬 프로그래밍 튜토리얼을 끝냈다면, 유능하고 자신감 넘치는 소프트웨어 개발자가 되기 위한 다음 단계는 무엇일까?

이 책을 그저 클린 코드 작성에 유용한 팁 모음집 정도로 보면 오산이다. 이 책은 명령행을 누비고 코드 포매터, 타입 검사기, 린터, 버전 관리 등 각종 전문 도구의 활용법을 보여준다. 저자 알 스웨이가트는 개발환경 설정, 변수 이름 짓기, 가독성 향상을 위한 모범 사례부터, 문서화, 코드 구성, 성능 측정, 객체 지향 설계, 빅오 알고리즘 분석까지 온갖 지식과 노하우를 전수해준다.

이 책에서 설파하는 중고급 기술은 파이썬뿐만 아니라 모든 언어에서 유용하며, 여러분의 프로그래밍 능력을 크게 향상시켜줄 것이다.

추천의 글

나의 첫 파이썬 프로그램도 동작은 한다. 그러나 진작에 이 책을 봤더라면 훨씬 더 나아졌을 것이다. 이 책은 초보자는 물론, 중급 개발자, 심지어 고급 프로그래머에게도 도움이 되는 알찬 지식의 금광이다.
- <긱 테크 스터프(Geek Tech Stuff)>
이 책은 모든 파이썬 개발자에게 유용한 내용으로 가득 차 있다. 코딩, 특히 파이썬 코딩을 둘러싼 기초 지식을 배우려는 모든 이에게 추천할 만한 도서로 과연 이보다 나은 책이 있을까?
- 이안 마이저(Ian Mizer) / 애틀란타 파이썬 프로그래머 그룹
정말 훌륭한 책이다. 저자 스웨이가트는 개발자가 주로 첫 단계에서 겪는 난관(도움 요청, 작업환경 설정), 프로그래밍 모범 사례와 도구, 기법, 그리고 마지막으로 객체 지향 파이썬 활용이라는 세 가지 주제에 초점을 맞췄다.
이 책은 여러 곳을 뒤적거리며 찾아야 하는 내용을 일목요연하게 모아 다루므로 특히 더 유용하다.
- 세다르 예구랄프(Serdar Yegulalp) / 인포월드(InfoWorld)

| 이 책의 구성 | 

이 책은 단순히 파이썬 구문을 깊이 다루는 선에서 그치지 않고, 명령행, 코드 포매터, 린터, 버전 관리 등 전문 개발자가 사용하는 명령행 도구에 대해 다양하게 설명한다. 무엇이 코드의 가독성을 높이고 어떻게 하면 제대로 클린 코드를 작성할 수 있는지 설명했으며, 프로그래밍 프로젝트 몇 가지를 수행하면서 이런 원리가 실제 소프트웨어에 어떻게 적용되는지 확인해볼 수 있다. 이 책이 컴퓨터 과학 교과서는 아니지만, 빅오 알고리즘 분석과 객체 지향 설계에 대한 주제도 다룬다.

 

[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://rnxinyminutes.com/docs/python/에 있는 ‘몇 분만에 익히는 파이썬(Python in Y Minutes)’이나 https://ehmatthes.github.io/pcc/cheatsheets/README.html에 있는 에릭 마테스의 ‘파이썬 특강: 치트 시트(Python Crash Course—Cheat Sheet)’ 페이지를 훑어보는 정도면 충분하다.

 

지은이 알 스웨이가트Al Sweigart

시애틀에 거주하는 소프트웨어 개발자이자 기술서 저자다. 프로그래밍 언어 가운데 파이썬을 가장 좋아해서 파이썬용 오픈 소스 모듈을 여럿 개발했다. 직접 집필한 모든 책을 크리에이티브 커먼즈 라이선스하에 웹사이트에서 무료로 읽을 수 있도록 공개해뒀다.

또 다시, 헬로 월드(Hello, world)! 1990년대 후반에 10대 프로그래머이자 해커 지망생이었던 나는 <2600 계간 해커(2600: The Hacker Quarterly)>라는 잡지의 최신호를 낱낱이 살펴보곤 했다. 그러던 어느 날 내가 사는 도시에서 그 계간지의 월례 모임이 열린다는 소식을 듣고 용기를 내어 참석하고서는 다른 참석자들의 풍부한 지식에 경외감을 느꼈다(후에 깨달은 것이지만, 참석자 중 대부분은 실제 알고 있는 지식보다 자신감이 더 넘쳤다). 당시 나는 모임 내내 다른 사람들이 하는 말에 고개만 끄덕이며 대화를 따라가려고 애썼다. 모임이 끝난 뒤 나는 깨어 있는 모든 시간 동안 컴퓨팅, 프로그래밍, 네트워크 보안을 공부해야겠다고 다짐했다. 그 다음달에 있을 모임에선 이야기에 적극적으로 참여할 수 있게 말이다.

그러나 그다음 모임에서도 나는 계속 고개만 끄덕였고 홀로 바보가 된 듯했다. 또 다시 나는 더 열심히 공부에 매진해 그들을 따라잡을 수 있을 만큼 ‘똑똑해지기로’ 결심했다. 한 달 두 달 시간이 지나 내 지식은 늘어났지만, 뒤처지고 있다는 느낌은 지워지지 않았다. 점차 컴퓨팅 분야의 방대함을 깨닫기 시작했고 내가 충분히 제대로 알게 되는 날은 영원히 오지 않을 것 같다는 우려가 들었다.

내 또래 고등학교 친구들보다야 프로그래밍에 대해 더 많이 알고 있었지만 소프트웨어 개발자로 취직하기에는 분명히 충분치 않았다. 1990년대에는 구글도 유튜브도 위키피디아도 없었다. 게다가 그런 서비스를 이용할 수 있었다고 해도 어떻게 사용해야 할지, 그다음엔 무엇을 공부해야 할지도 잘 몰랐을 테다. 그래서 나는 헬로 월드! 프로그램을 다양한 프로그래밍 언어로 작성하는 법도 공부했지만 별다른 진전은 없었다. 당시 나는 기본을 넘어서 수준을 높이는 방법을 몰랐던 것이다.

소프트웨어 개발은 루프와 함수 말고도 알아야 할 내용이 상당히 많다. 하지만 초급 과정을 마치거나 프로그래밍 입문서를 읽은 뒤에 더 많은 지침을 찾는 학습 방식이 결국 또 다른 헬로 월드 튜토리얼로 이어진다. 프로그래머들은 이 시기를 ‘절망의 사막’이라고 부르곤 한다. 정처없이 여러 학습물들을 들쑤시지만 발전이 없다고 느끼는 시간이다. 초급 자료를 뒤적거리기에는 이미 많은 내용을 학습했지만, 고급 주제를 놓고 씨름하기에는 아직 경험이 부족하다.

이런 사막을 헤매는 사람들은 ‘가면 증후군(imposter syndrome)’을 겪을 가능성이 농후하다. 자기가 ‘진짜’ 프로그래머가 아니라거나 ‘진짜’ 프로그래머가 코딩을 하는 방식을 알지 못한다고 느낀다. 나는 이런 분들을 위해 이 책을 썼다. 여러분이 이미 파이썬의 기본을 배웠다면 이 책은 여러분이 역량 있는 개발자가 되어 절망감을 떨쳐낼 수 있게 도울 것이다.

옮긴이 박재호

포항공과대학교 컴퓨터공학과 학부와 대학원을 졸업했다. 임베디드 시스템 개발, 기업용 백업 소프트웨어 개발, 방송국 콘텐츠 수신제한 시스템 개발과 운영 지원, 클라우드에서 동작하는 서비스 개발에 이르기까지 다양한 실무 경험을 토대로 고성능 고가용성 시스템을 설계하고 있다. 코스닥 상장사인 엑셈 CTO로 인공지능과 스마트팩토리 관련 개발을 총괄했으며, 클라우드용 모니터링 시스템을 위한 아키텍처 설계도 주도했다. 『마이크로서비스 도입, 이렇게 한다』(책만, 2021), 『Clean Code 클린 코드』(인사이트, 2013), 『피플웨어』(인사이트, 2014) 번역, 『엘라스틱 스택 개발부터 운영까지(책만, 2021)』 감수 등 번역·감수하거나 집필한 책이4 0여 권이 넘는다.
각종 기술 소식을 다루는 블로그 ‘컴퓨터 vs 책’(https://jhrogue.blogspot.com/)과 개발자를 위한 유튜브 ‘채널 박재호’(https://www.youtube.com/c/박재호dev)를 운영하며, 개발자들을 위한 각종 교육과 세미나도 지속적으로 진행하고 있다.

로버트 C 마틴의 『클린 코드: 애자일 소프트웨어 장인 정신』이 출간된 이후로 깨끗한 코드 작성과 리팩토링에 대한 개발자들의 관심은 나날이 높아지고 있다. 가독성 높은 코드가 제공하는 유지보수 편의성과 기능 확장 가능성은 레거시 코드를 다루는 개발자는 물론, 처음부터 프로젝트를 시작하는 개발자들도 추구해야 하는 소프트웨어의 속성으로 인정받고 있다. 이를 위해 다양한 실천 방법과 우수 사례가 공유되고 있으며, 통합개발환경(IDE)의 발전으로 인해 자동화의 혜택까지 얻을 수 있다. 하지만 이렇게 무르익은 분위기와 환경에서도 뭔가 2% 부족함을 느낀다면 딱히 당신만의 문제는 아니다.

다른 여느 프로그래밍 언어와 마찬가지로 파이썬 역시 입문은 쉽고 마스터하기는 어렵다. 특히 여타 프로그래밍 언어와 비교해 파이썬은 고수준 특성으로 인해 처음 문턱을 넘기가 상대적으로 쉽기 때문에 초보 개발자들은 컴퓨터로 할 수 있는 다양한 가능성에 눈을 뜨게 되지만, 막상 실전에 부딪혀 문제를 풀려고 하면 그제서야 파이썬이 결코 만만하지 않다는 사실을 깨닫고 충격에 휩싸이게 된다. 파이썬 언어의 문제일까? 아니면 복잡한 라이브러리와 프레임워크의 문제인가? 아니면 컴퓨터 하부 지식을 모르는 내 기초 역량의 문제인가? 정말 고수들은 어떻게 파이썬을 사용하고 있으며 그 과정에서 남들은 내가 모르는 파이썬의 어떤 비밀을 알고 있을까?

『클린 코드, 이제는 파이썬이다』는 제목에서 잘 드러나듯이 클린 코드를 파이썬에 적용해서 파이썬다운 코드를 만드는 방법을 소개한다. 기존의 클린 코드 관련 서적과 온라인 문서에서 다루는 내용을 파이썬에 그대로 이식하는 대신, 이 책은 초보 개발자가 우수 개발자로 탈바꿈하는 과정에서 반드시 넘어야 하는 장애물을 파악하고 이를 정석대로 해소하는 방법을 다양한 사례와 팁으로 제시한다는 특징이 있다. 이 책은 전문가처럼 정보를 찾고 명령행을 활용하고, 클린 코드에서 중요하게 생각하는 이름을 지으며, 코딩 스타일과 포매팅, 코드 악취 해소, 효율적인 함수 작성, 주석과 타입 힌트에 대해 파이썬다운 지침을 따르고, 파이썬의 기이한 특징과 함정들을 잘 피하기 위한 실전 팁과 현업의 요령을 소개한다. 또한 컴퓨터 전문 지식을 강화하기 위해 각종 프로그래밍 용어, 반드시 알아야 하는 핵심 버전 관리 방법, 알고리즘 성능 측정에 대한 이론과 도구, 객체지향에 대한 설명도 빼놓지 않는다. 앞쪽에서 습득한 지식을 바탕으로 마지막에는, 간단한 게임을 파이썬다운 객체지향 방식으로 확장해 나가는 방안을 단계별로 제시하므로 점진적으로 발전하고 확장 가능한 소프트웨어 개발에 대한 감을 잡을 수 있도록 배려한다.

이 책이 획기적인 돌파구를 마련해주지는 않을지 몰라도, 매일 조금씩 실력을 높이고 싶은 개발자들에게 동기를 부여하고 출발점을 알려주며 도전에 직면했을 때 두려워하지 않도록 기초를 튼튼하게 다지는 내용으로 매우 알차게 구성되어 있다. 이 책을 읽고, 책에서 배운 내용을 실행해보며, 자신만의 색깔로 바꾸는 과정을 반복하다 보면 어느 순간 소프트웨어 전문 개발자로 거듭난 자신을 발견하게 될 것이다. 아무쪼록 독자 여러분의 개발 여정에서 이 책이 훌륭한 스승이자 좋은 벗이 되면 좋겠다.

 

옮긴이 김동현

연세대 컴퓨터공학 학·석사를 졸업하고 네이버 검색 부서와 현대자동차 AIRS 컴퍼니에서 백엔드 서빙을 전문적으로 다루고 있다. 검색/추천의 전문성 키워드 아래에 현재 컨테이너 기반 파이썬/Golang 위주의 개발 프로젝트를 주도하고 있으며 이따금씩 후학 개발자들을 위해 따로 멘토링을 제공한다.

자바, Golang, C++ 같은 언어에 비해 파이썬이라는 언어가 지니는 독특함이 있다. 다른 언어보다 접근성이 좋고 설명하거나 이해하기 쉽지만 알고리즘 코딩 테스트에서의 실행 속도가 다른 언어에 비해 느린 측면도 있고 디버깅에 어려움을 표현하는 개발자들도 있다. 으레 파이썬 전문가라는 단어를 쓸 때 그 파이썬 전문가가 어떤 스킬이나 이해를 갖고 있는지, 어떤 스텝을 통해 후학들이 파이썬 전문가로 될 수 있는지를 설명하는 것을 일반적으로 숙련된 개발자들조차 어려워할 때가 많다.

이 책은 파이썬 입문서와는 거리가 멀다. 하지만 지나치게 현학적인 책과도 거리를 둔다. 초보자와 전문가의 중간 단계를 어떻게 메워 나갈 것인가에 대한 저자의 고민이 곳곳에 숨어 있는 것을 볼 수 있다. 이 책은 어려운 데코레이터를 쓰지도 않으며 심한 축약형 람다를 쓰지도 않는다. 하지만 초보자들이 한 스텝 더 실행해 볼 수 있는 여러 방법들을 제시해준다.

 

[차례]

[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 사용
____읽기 전용 프로퍼티
____프로퍼티를 사용할 시점
__파이썬의 이중밑줄 메소드
____문자열 표현 이중밑줄 메소드
____숫자 이중밑줄 메소드
____거울 숫자 이중밑줄 메소드
____제자리 바꿔치기 증강 대입 이중밑줄 메소드
____비교 이중밑줄 메소드
__정리

'+ 펴낸 책' 카테고리의 다른 글

게임 시스템 디자인 입문  (0) 2023.03.24
제품의 탄생  (0) 2022.11.30
파이토치 딥러닝 마스터  (2) 2022.06.22
딥러닝을 이용한 정형 데이터 분석  (0) 2022.06.08
실전 파이썬 핸즈온 프로젝트  (0) 2022.05.23

댓글