이미 소장하고 있다면 판매해 보세요.
|
CHAPTER 1 파이썬이란 어떤 언어인가? 1
1.1 프로그래밍 언어로서의 특징 3 1.1.1 간단하고 읽기 쉬운 동적 타입 언어 3 1.1.2 하위 호환성 중시 5 1.1.3 풍부한 표준 라이브러리 6 1.1.4 다양한 용도로 이용 6 1.2 파이썬의 역사와 현황 7 1.2.1 파이썬 자체의 진화 8 1.2.2 파이썬을 둘러싼 환경의 변화 9 1.3 파이썬 커뮤니티의 특징 10 1.3.1 커뮤니티 주체 오픈소스 소프트웨어 10 1.3.2 PEP의 존재 11 1.4 정리 15 CHAPTER 2 파이썬 설치와 개발자를 위한 편리한 기능 17 2.1 파이썬 설치 19 2.1.1 OS에 미리 설치되어 있는 파이썬 19 2.1.2 macOS에서의 이용 19 2.1.3 Windows에서의 이용 21 2.1.4 Ubuntu에서의 이용 23 2.1.5 도커 이용 24 2.2 파이썬 실행 28 2.2.1 이 책에서 이용하는 파이썬 명령어 28 2.2.2 파이썬 인터프리터의 두 가지 모드 28 2.2.3 대화형 모드 인터프리터 29 2.2.4 대화형 모드의 기본 사용법 29 2.2.5 대화형 모드에서 자주 사용하는 내장 함수 31 2.2.6 스크립트 실행 35 2.2.7 python 명령어와 python3 명령어의 차이 37 2.3 정리 37 CHAPTER 3 제어 흐름 39 3.1 기본 문법 41 3.1.1 들여쓰기를 사용한 블록 표현 41 3.1.2 변수 이용 43 3.1.3 주석 45 3.2 조건 분기 47 3.2.1 if 문 ― 조건을 지정해 처리를 분기함 47 3.3 루프 ― 처리 반복 51 3.3.1 for 문 ― 엘리먼트 수만큼 처리를 반복 51 3.3.2 while 문 ― 조건을 지정해 처리를 반복 55 3.3.3 break 문 ― 루프를 벗어남 56 3.3.4 continue 문 ― 다음 루프로 이동 57 3.4 예외 처리 59 3.4.1 try 문 ― 예외 포착 60 3.4.2 raise 문 ― 의도적으로 예외를 발생시킴 65 3.4.3 사용자 예외 정의 65 3.4.4 with 문 ― 정의한 클린업 처리를 반드시 실행함 66 3.5 정리 67 CHAPTER 4 데이터 구조 69 4.1 None ― 값이 존재하지 않음을 표현 71 4.1.1 조건식에서의 None 이용 71 4.2 논릿값 ― 참/거짓을 다룸 72 4.2.1 bool 타입 ― 논릿값을 다루는 타입 72 4.2.2 불 연산 73 4.3 숫잣값 75 4.3.1 숫잣값끼리의 연산 75 4.3.2 숫잣값을 다루는 내장 타입 77 4.3.3 조건식에서의 숫잣값 이용 80 4.4 문자열 81 4.4.1 str 타입 ― 문자열을 다루는 타입 81 4.4.2 문자열 연산 82 4.4.3 for 문에서의 문자열의 동작 82 4.4.4 조건식에서의 문자열 이용 83 4.4.5 문자열 안에서의 변수 이용 83 4.4.6 str 타입과 매우 비슷한 bytes 타입 86 4.5 배열 ― 엘리먼트를 1열로 나열해서 다룸 87 4.5.1 list 타입 ― 변경할 수 있는 배열을 다루는 타입 88 4.5.2 tuple 타입 ― 변경할 수 없는 배열을 다루는 타입 90 4.5.3 조건식에서 이용되는 배열의 특성 93 4.5.4 튜플과 리스트의 이용 구분 94 4.6 딕셔너리 ― 키와 값의 세트를 다룸 94 4.6.1 dict 타입 ― 딕셔너리를 다루는 타입 94 4.6.2 엘리먼트 추가와 삭제 95 4.6.3 키를 이용한 엘리먼트로의 접근 95 4.6.4 키로 이용할 수 있는 객체의 조건 96 4.6.5 for 문에서의 딕셔너리의 동작 96 4.6.6 조건식에서 이용할 수 있는 딕셔너리의 특성 97 4.7 집합 ― 유일한 엘리먼트의 집합을 다룸 98 4.7.1 set 타입 ― 변경할 수 있는 집합을 다루는 타입 98 4.7.2 frozenset 타입 ― 변경할 수 없는 집합을 다루는 타입 100 4.7.3 집합 연산 ― 합집합, 교집합, 차집합, 대칭차집합 100 4.7.4 for 문에서의 집합의 동작 101 4.7.5 조건식에서 이용할 수 있는 집합의 특성 102 4.8 컴프리헨션 ― 효율적인 시퀀스 생성 103 4.8.1 리스트 컴프리헨션 ― 효율적인 리스트 생성 103 4.8.2 기타 컴프리헨션 106 4.9 그 외 타입을 나타내는 개념 106 4.9.1 가변 객체 ― 정의 후 값을 변경할 수 있는 객체 107 4.9.2 불변 객체 ― 정의 후 값을 변경할 수 없는 객체 107 4.9.3 컨테이너 객체 ― 다른 객체에 대한 참조를 가진 객체 107 4.9.4 이터러블 객체 ― for 문에서 이용할 수 있는 객체 108 4.9.5 호출 가능 객체 ― ()를 붙여 호출할 수 있는 객체 108 4.10 정리 108 CHAPTER 5 함수 109 5.1 함수 ― 관련된 처리를 모음 111 5.1.1 함수 정의와 실행 111 5.1.2 인수를 받는 함수 112 5.1.3 함수는 객체 112 5.1.4 함수의 반환값 113 5.1.5 함수의 다양한 인수 115 5.1.6 인수 리스트 언팩 ― 리스트나 딕셔너리에 저장된 값을 인수로 전달 123 5.1.7 함수의 독스트링 123 5.2 lambda 식 ― 이름이 없는 함수 작성 125 5.2.1 lambda 식 정의와 실행 125 5.2.2 lambda 식을 사용할 위치 125 5.3 타입 힌트 126 5.3.1 타입 정보를 부여함으로써 얻을 수 있는 장점 126 5.3.2 타입 정보 부여 126 5.3.3 타입 힌트 활용 사례 ― 정적 분석 도구 이용 128 5.4 정리 129 CHAPTER 6 클래스와 인스턴스 131 6.1 파이썬의 클래스 구조 133 6.1.1 class 키워드를 이용한 클래스 정의 133 6.1.2 인스턴스 만들기 134 6.2 인스턴스 ― 클래스를 기반으로 만들어진 객체 134 6.2.1 인스턴스 메서드 ― 인스턴스에 묶인 메서드 135 6.2.2 인스턴스 변수 ― 인스턴스가 유지하는 변수 136 6.2.3 인스턴스 초기화 136 6.2.4 프로퍼티 ― 인스턴스 메서드를 인스턴스 변수와 같이 다룸 140 6.2.5 클래스와 인스턴스의 프라이빗 속성 143 6.3 클래스 ― 인스턴스의 모형이 되는 객체 144 6.3.1 클래스 변수 ― 클래스 객체가 유지하는 변수 144 6.3.2 클래스 메서드 ― 클래스에 속한 메서드 146 6.4 클래스 상속 149 6.4.1 메서드 오버라이드와 super()를 사용한 베이스 클래스로의 접근 149 6.4.2 모든 객체는 object 클래스의 서브 클래스 150 6.4.3 다중 상속 ― 여러 베이스 클래스를 지정 150 6.4.4 다중 상속 시 주의점 151 6.5 정리 154 CHAPTER 7 모듈, 패키지, 이름 공간, 스코프 155 7.1 모듈 ― 코드를 기술한 .py 파일 157 7.1.1 모듈 작성 157 7.1.2 모듈 임포트 158 7.1.3 python3 명령어로 직접 실행하기 158 7.2 패키지 ― 모듈의 집합 163 7.2.1 패키지 작성 164 7.2.2 패키지 안에 있는 모듈 임포트 165 7.2.3 import 문 비교 168 7.3 임포트의 구조 172 7.3.1 모듈 검색 흐름 173 7.3.2 sys.path ― 모듈 검색 경로 173 7.3.3 PYTHONPATH ― sys.path에 검색 경로를 추가 175 7.4 이름 공간과 변수의 스코프 176 7.4.1 이름 공간 ― 이름과 객체의 매핑 176 7.4.2 스코프 ― 직접 접근할 수 있는 영역 177 7.5 정리 185 CHAPTER 8 내장 함수와 특수 메서드 187 8.1 내장 함수 ― 항상 이용할 수 있는 함수 189 8.1.1 객체 타입을 조사하는 함수 189 8.1.2 객체 속성에 관한 함수 192 8.1.3 getattr( ), setattr( ), delattr( ) ― 객체 속성 조작 193 8.1.4 이터러블 객체를 받는 함수 194 8.1.5 기타 내장 함수 200 8.2 특수 메서드 ― 파이썬이 암묵적으로 호출하는 특별한 메서드 200 8.2.1 __str__( ), __repr__( ) ― 객체를 문자열로 표현 201 8.2.2 __bool__( ) ― 객체를 논릿값으로 평가함 202 8.2.3 __call__( ) ― 인스턴스를 함수처럼 다룸 203 8.2.4 속성으로의 동적 접근 204 8.2.5 이터러블 객체로서 동작 207 8.2.6 컨테이너 객체로서 동작 209 8.2.7 기타 특수 메서드 212 8.3 정리 213 CHAPTER 9 파이썬의 독특한 기능들 215 9.1 제너레이터 ― 메모리 효율이 높은 이터러블 객체 217 9.1.1 제너레이터의 구체적인 예시 217 9.1.2 제너레이터 구현 217 9.1.3 제너레이터 이용 시 주의점 221 9.1.4 제너레이터 실제 사례 ― 파일 내용 변환하기 223 9.1.5 기타 이용 사례 224 9.2 데커레이터 ― 함수나 클래스명에 처리 추가 224 9.2.1 데커레이터의 구체적인 예시 224 9.2.2 데커레이터 구현 226 9.2.3 데커레이터 실제 사례 ― 처리 시간 측정 231 9.2.4 기타 이용 사례 232 9.3 콘텍스트 관리자 ― with 문 앞뒤에서 처리를 실행하는 객체 233 9.3.1 콘텍스트 관리자의 구체적인 예시 233 9.3.2 콘텍스트 관리자 실제 사례 ― 일시적인 로깅 수준 변경 238 9.3.3 기타 이용 사례 239 9.4 디스크립터 ― 속성 처리를 클래스로 이첩 240 9.4.1 디스크립터의 구체적인 예시 240 9.4.2 디스크립터 구현 242 9.4.3 디스크립터 실제 사례 ― 프로퍼티 캐시 245 9.4.4 기타 이용 사례 247 9.5 정리 247 CHAPTER 10 동시 처리 249 10.1 동시 처리와 병렬 처리 ― 여러 처리를 동시에 수행 251 10.1.1 순차 처리 실행 251 10.1.2 동시 처리 실행 251 10.1.3 병렬 처리 실행 252 10.1.4 파이썬과 동시 처리 252 10.2 concurrent.futures 모듈 ― 동시 처리를 위한 고수준 인터페이스 253 10.2.1 Future 클래스와 Executor 클래스 ― 비동기 처리 캡슐화와 실행 254 10.2.2 ThreadPoolExecutor 클래스 ― 스레드 기반 비동기 실행 256 10.2.3 ThreadPoolExecutor 클래스를 이용한 10.2.4 ProcessPoolExecutor 클래스 ― 프로세스 기반 비동기 실행 263 10.2.5 ProcessPoolExecutor 클래스를 이용한 다중 프로세스 처리 구현 263 10.3 asyncio 모듈 ― 이벤트 루프를 사용한 동시 처리 수행 271 10.3.1 코루틴 ― 처리 도중에 중단, 다시 시작 272 10.3.2 코루틴 스케줄링과 실행 276 10.3.3 asyncio 모듈과 HTTP 통신 279 10.4 정리 280 CHAPTER 11 개발 환경과 패키지 관리 281 11.1 가상 환경 ― 격리된 파이썬 실행 환경 283 11.1.1 venv ― 가상 환경 생성 도구 283 11.2 패키지 이용 289 11.2.1 pip ― 패키지 관리 도구 289 11.2.2 환경 저장과 재현 ― requirements 파일 활용 298 11.3 패키지 작성 302 11.3.1 setup.py ― 패키지 정보를 모아둔 파일 302 11.3.2 PyPI에 패키지 등록 309 11.4 정리 313 CHAPTER 12 단위 테스트 315 12.1 단위 테스트 도입 317 12.1.1 단일 모듈 테스트 317 12.1.2 패키지 테스트 319 12.2 unittest 모듈 ― 표준 단위 테스트 라이브러리 323 12.2.1 테스트 케이스 구현 323 12.2.2 테스트 실행과 결과 확인 327 12.2.3 특정한 테스트만 실행하기 329 12.3 unittest.mock 모듈 ― 모의 객체 이용 331 12.3.1 모의 객체 기본 사용법 331 12.3.2 patch를 사용한 객체 치환 334 12.3.3 mock을 이용한 테스트 케이스 구현 335 12.4 상황에 따른 테스트 케이스 구현 336 12.4.1 환경에 의존하는 테스트 건너뛰기 337 12.4.2 예외 발생 테스트하기 338 12.4.3 다른 파라미터로 동일한 테스트 반복하기 339 12.4.4 콘텍스트 관리자 테스트하기 340 12.5 정리 341 CHAPTER 13 파이썬 애플리케이션 개발 실전 343 13.1 작성할 애플리케이션 345 13.1.1 LGTM 이미지를 자동으로 생성하는 커맨드 라인 도구 345 13.1.2 이용할 주요 외부 패키지 346 13.2 프로젝트 작성 349 13.2.1 Git 이용 350 13.2.2 패키지 모형 작성 351 13.3 지속적인 통합 도입 354 13.3.1 CircleCI에서의 테스트 자동화 354 13.3.2 테스트 실행 및 결과 확인 356 13.4 애플리케이션 개발 358 13.4.1 커맨드 라인 인수 얻기 358 13.4.2 이미지 얻기 361 13.4.3 이미지 처리 364 13.4.4 각각의 처리 호출 366 13.5 명령어로 실행하기 367 13.5.1 setup.py 작성 367 13.5.2 동작 확인하기 368 13.6 정리 369 |
陶山 嶺
김연수 의 다른 상품
|
가장 먼저 나타나는 격언인 ‘Beautiful is better than ugly.’는 ‘못생긴 것보다는 아름다운 것이 낫다’라는 의미로, 여기에서도 읽기 쉬움을 중시하는 파이썬의 철학이 나타납니다.
---「PEP 20: The Zen of Python ― 파이썬 설계 가이드라인」중에서 이 연산자는 if 문이나 루프의 조건식 안 등에서 변수에 값을 대입할 수 있는 연산자로 ‘PEP 572 -- Assignment Expressions’a에서 활발하게 논의한 끝에 도입하였습니다. 이 := 연산자는 옆으로 누운 바다코끼리의 눈과 엄니를 닮아서 Walrus operator(바다코끼리 연산자)라고 부릅니다. ---「식 안에서 대입을 수행하는 := 연산자」중에서 print_page() 함수를 2회 호출했지만, 표시되는 타임스탬프는 완전히 같습니다. 표시하고 싶은 것은 호출 시의 시각인데, 이 함수는 원하는 결과를 보여주지 않습니다. 이 함수가 기대한 대로 동작하도록 다음과 같이 수정합니다. ... 수정 후 실행 결과에서는 호출 시 시각이 올바르게 표시되었습니다. ---「기본값의 함정」중에서 실행 시에 타입 체크를 하지 않는데도 불구하고, 타입 정보를 부여하는 의미는 무엇일까요? 바로 타입 정보를 부여하면 코드의 유지보수성이 높아지기 때문입니다. 구체적으로는 코드를 읽는 사람의 이해를 돕거나, mypy5 등의 정적 분석 도구를 이용한 타입 체크 이용, 에디터나 IDE의 코드 보완 정밀도 향상 등을 기대할 수 있습니다. 그리고 타입 정보를 활용한 코드 자동 생성에도 활용할 수 있습니다. ---「타입 정보를 부여함으로써 얻을 수 있는 장점」중에서 제너레이터의 실제 사례로 파일 내용을 대문자로 변환하는 프로그램을 소개합니다. 이 프로그램에서는 파일을 한 행씩 읽는 제너레이터 함수 reader()를 만들고, 그 반환값을 writer() 함수에 전달합니다. writer() 함수는 전달받은 이터레이터를 사용해 파일을 한 행씩 읽고 convert() 함수로 변환하여 결과를 새로운 파일에 한 행씩 씁니다. 읽기→변환→쓰기 과정을 한 행씩 수행하기 때문에 대상 파일의 크기가 아무리 크더라도 메모리에 부하를 주지 않고 동작합니다. ---「제너레이터 실제 사례 ― 파일 내용 변환하기」중에서 이것으로 LGTM 이미지를 자동으로 생성하는 처리를 완성했습니다. lgtm/core.py의 cli() 함수로부터 동작 확인용 처리 click.echo('lgtm')을 삭제하고 동작을 확인해 봅니다. python3 main.py book을 실행 후 이미지 가운데에 크게 LGTM이라고 쓰인 이미지 output.png가 출력되었다면 성공입니다(그림 13.6). ---「제너레이터 실제 사례 ― 파일 내용 변환하기」중에서 |
|
파이써닉한 개발자로 거듭나고 싶은 분께 추천합니다!
이 책은 이제부터 파이썬을 시작하고자 하는 프로그래밍 경험자들에게 가장 적합한 파이썬 입문서입니다. 평소 파이썬을 사용하고 있는 분들도 더욱 자신감을 갖고 파이썬을 쓸 수 있도록 실력을 한 단계 업그레이드하는 데 활용할 수 있습니다. 파이썬의 개발 배경에서 시작해 파이썬을 구성하는 요소, 언어의 설계 방식, 구현상의 특징, 단순한 알고리즘뿐만이 아닌 프로그램 작성과 배포의 흐름을 짚어가다 보면 어느새 파이썬을 지금보다 효과적으로 사용할 수 있는 아이디어를 얻을 수 있을 것이고, 이로써 여러분의 프로그래밍 능력을 한층 강하게 만들어줄 것입니다. 이 책의 특징 -파이썬을 처음 접한 분들에게 탄탄하게 기초를 다질 수 있는 길을 제시 -파이썬 소개, 자료형 등 아주 기초적인 주제로 시작하여, 중후반부로 갈수록 다른 입문서에서는 보기 힘든, 깊이 있는 주제를 다루고 있는 독특한 구성 -파이썬의 기본적인 문법 외에도 venv, 단위 테스트, CI, 패키지 관리 등을 전체적으로 다루며, 문법 자체보다는 해당 언어로 구현할 작업들을 큰 그림으로 살펴볼 수 있도록 함 -파이썬을 사용한 웹 개발, 혹은 인공지능, 빅데이터 분야로 가기 전에 기본 실력을 기르는 활용서로 사용할 것을 추천 이 책의 대상 독자 -파이썬을 처음 접하는 분 -파이썬에 관심 있는 모든 프로그래머 -파이썬의 개념을 다시 한번 정리하고 싶으신 분 -파이썬 실력을 초급에서 중상급으로 올리고 싶은 분 |