책소개
가독성 높으며 유지 보수와 기능 확장이 쉬운 파이썬 코드를 원하는가? 기초적인 파이썬 프로그래밍 문법이나 튜토리얼을 끝냈다면, 유능하고 자신감 넘치는 소프트웨어 개발자가 되기 위한 다음 단계는 무엇일까? 노련한 프로그래머의 유쾌한 경험과 진솔한 노하우를 한 권에 담아낸, 현업에서 즉시 적용할 수 있는 파이썬 클린 코드의 모든 것! 파이썬 개발자의 성장과 업그레이드를 위한 실무 프로그래밍 지식 총정리!
목차
[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 사용____읽기 전용 프로퍼티____프로퍼티를 사용할 시점__파이썬의 이중밑줄 메소드____문자열 표현 이중밑줄 메소드____숫자 이중밑줄 메소드____거울 숫자 이중밑줄 메소드____제자리 바꿔치기 증강 대입 이중밑줄 메소드____비교 이중밑줄 메소드__정리