함수형 파이썬 프로그래밍
도서명:함수형 파이썬 프로그래밍
저자/출판사:스티븐,로트/에이콘출판
쪽수:436쪽
출판일:2017-02-28
ISBN:9788960779761
목차
1장, 함수형 프로그래밍 소개
__패러다임 구별하기
__명령형 패러다임 구분하기
__함수형 패러다임 사용하기
__함수형 혼합체 사용하기
__객체 생성 살펴보기
__거북이의 스택
__함수형 프로그래밍의 고전적인 예제
__탐색적 자료 분석
__요약
2장, 함수형 기능 소개
__일급 계층 함수
____순수 함수
____고차 함수
__변경 불가능한 데이터
__엄격한 평가와 엄격하지 않은 평가
__명시적 루프 상태 대신 재귀 사용
__함수형 타입 시스템
__낯익은 영역
__어려운 개념 남겨두기
__요약
3장, 함수, 반복자, 제네레이터
__순수 함수 작성하기
__일급 계층 객체인 함수
__문자열 사용하기
__tuple과 namedtuple 사용하기
____제네레이터 식 사용하기
____제네레이터의 한계
____제네레이터 식 조합하기
__제네레이터 함수를 사용해 원자료 정리하기
__list, dict, set 사용하기
____상태가 있는 매핑 사용하기
____bisect 모듈을 사용해 매핑 만들기
____상태가 있는 집합 사용하기
__요약
4장, 컬렉션으로 작업하기
__함수의 다양성에 대한 정리
__반복 가능 객체로 작업하기
____XML 파일 구문 분석하기
____파일을 상위 수준에서 구문 분석하기
____시퀀스의 원소를 둘씩 짝 짓기
____iter() 함수를 명시적으로 사용하기
____단순한 루프 확장하기
____제네레이터 식을 스칼라 함수에 적용하기
____축약으로 any()와 all()을 사용하기
____len()과 sum() 사용하기
____통계에 합계와 원소 개수 활용하기
__zip()을 사용해 시퀀스를 구조화하거나 펼치기
____튜플로 묶은 시퀀스를 다시 풀기
____시퀀스 펼치기
____평평한 시퀀스 구조화하기
____평면 시퀀스 구조화하기 - 다른 방법
__순서를 바꾸기 위해 reversed() 사용하기
__enumerate()를 사용해 인덱스 번호 포함시키기
__요약
5장, 고차 함수
__max()와 min()을 사용해 최댓값, 최솟값 알아내기
__파이썬의 람다 식 사용하기
__람다와 람다대수
__map() 함수를 사용해 함수를 컬렉션에 적용하기
____map()에 람다 형식 사용하기
__map()을 여러 시퀀스에 활용하기
__filter()를 사용해 데이터를 받아들이거나 거부하기
__filter()를 사용해 이상값 식별하기
__iter() 함수와 끝을 표시하는 특별한 값 사용하기
__sorted()를 사용해 데이터 정렬하기
__고차 함수 작성하기
__고차 매핑과 필터 작성하기
____매핑하면서 데이터 풀기
____매핑하면서 추가 데이터를 감싸기
____매핑하면서 데이터를 펼치기
____걸러내면서 데이터 구조화하기
__제네레이터 함수 작성하기
__Callable로 고차 함수 만들기
____좋은 함수형 설계를 보장하기
__디자인 패턴 살펴보기
__요약
6장, 재귀와 축약
__수를 계산하는 간단한 재귀
____꼬리재귀 호출 구현하기
____재귀를 그대로 남겨두기
____처리하기 어려운 꼬리재귀 다루기
____재귀를 사용해 컬렉션 처리하기
____컬렉션에 대한 꼬리 호출 최적화
____축약과 겹치기 - 많은 값을 한 가지 값으로 줄이기
__그룹 만들기 축약 - 많은 값을 좀 더 적은 값으로 줄이기
____Counter로 매핑 만들기
____정렬을 사용해 매핑 만들기
____키 값에 따라 데이터를 그룹화하거나 분할하기
____더 일반적인 그룹화 축약 작성하기
____고차 축약 함수 작성하기
____파일 구문 분석기 작성하기
________CSV 파일 구문 분석하기
________헤더가 있는 일반 텍스트 파일 구문 분석하기
__요약
7장, 튜플을 사용하는 다른 기법
__변경 불가능한 이름 있는 튜플을 레코드로 사용하기
__함수형 생성자로 이름 있는 튜플 만들기
__상태가 있는 클래스 사용을 피하기 위해 튜플 사용하기
____통계적인 순위 할당하기
____상태를 바꾸는 대신 감싸기
____상태를 바꾸는 대신 다시 감싸기
____스피어맨 순위 상관계수 계산하기
__다형성과 파이썬다운 패턴 매치
__요약
8장, itertools 모듈
__무한 반복자로 작업하기
____count()로 개수 세기
____cycle()을 사용해 순환되는 원소를 계속 반복하기
____repeat()로 단일 값 반복하기
__유한한 반복자 사용하기
____enumerate()로 수 할당하기
____accumulate()로 현재까지의 합계 구하기
____chain()으로 반복자 조합하기
____groupby()로 반복자 분할하기
____zip_longest(), zip()을 사용해 반복 가능 객체 합치기
____compress()로 걸러내기
____islice()로 부분 집합 선택하기
____dropwhile()과 takewhile()로 상태를 사용해 걸러내기
____걸러내기 위한 두 가지 접근 방법인 filterfalse()와 filter()
____starmap()과 map()을 사용해 함수를 데이터에 적용하기
__tee()를 사용해 반복자 복제하기
__itertools 요리법
__요약
9장, 더 많은 itertools 사용 기법
__데카르트 곱 열거하기
__곱을 축약하기
____거리 계산하기
____모든 픽셀과 모든 색 얻기
____성능 분석
____문제를 다시 배열하기
____두 가지 변환 조합하기
__값의 컬렉션 순열 구하기
__모든 조합 구하기
__요리법
__요약
10장, functools 모듈
__함수 도구
lru_cache로 결과 캐시하기
__완전한 순서가 정해져 있는 클래스 정의하기
____수 클래스 정의하기
__partial()로 인자 중 일부만 적용하기
__데이터 집합을 reduce()를 사용해 축약하기
____map()과 reduce() 조합하기
____reduce()와 partial() 사용하기
____원데이터를 정리하기 위해 map()과 reduce() 사용하기
____groupby()와 reduce() 사용하기
__요약
11장, 데커레이터 설계 기법
__고차 함수로서의 데커레이터
____functools의 update_wrapper() 함수 사용하기
__횡단 관심사
__합성 설계
____잘못된 데이터 처리하기
__매개변수를 데커레이터에 추가하기
__좀 더 복잡한 데커레이터 구현하기
__설계의 한계를 인식하기
__요약
12장, 다중 프로세스와 스레드 모듈
____동시성의 진정한 의미는 무엇인가?
____경계 조건
____프로세스나 스레드 사이에 자원 공유하기
____어디서 이익이 누적되는가?
__다중 프로세싱 풀과 작업 사용하기
____여러 큰 파일 처리하기
____로그 파일 구문 분석하기 - 행 수집하기
____로그 항목을 이름 있는 튜플로 만들기
____Access 객체의 추가 필드 구문 분석하기
____자세한 접근 정보 걸러내기
____자세한 접근 정보 분석하기
____완전한 분석 프로세스
__동시 처리에 다중 프로세스 풀을 사용하기
____apply()를 사용해 단일 요청 만들기
____map_async(), starmap_async(), apply_async() 사용하기
____더 복잡한 다중 프로세스 구조
____concurrent.futures 모듈 사용하기
____concurrent.futures 스레드 풀 사용하기
____스레드와 큐 모듈 사용하기
____동시 처리 설계하기
__요약
13장, 조건식과 연산자 모듈
__조건식 평가하기
____엄격하지 않은 딕셔너리 규칙 활용하기
____참인 조건식 컬러내기
__람다 대신 operator 모듈 사용하기
____고차 함수를 사용할 때 이름 있는 애트리뷰트 가져오기
__연산자를 사용한 starmap
__연산자를 사용해 축약하기
__요약
14장, PyMonad 라이브러리
__다운로드 및 설치하기
__함수적 합성과 커링
____커링한 고차 함수 사용하기
____더 어려운 방식으로 커링하기
__함수적 합성과 PyMonad 곱셈 연산자
__펑터와 적용 가능 펑터
____지연 List() 펑터 사용하기
__모나드의 개념과 bind() 함수, 이진 오른쪽 시프트 연산자(>>)
__모나드를 사용해 시뮬레이션 구현하기
__추가 PyMonad 기능들
__요약
15장, 웹 서비스에 대한 함수적 접근
__HTTP 요청-응답 모델
____쿠키로 상태 주입하기
____서버를 함수형으로 설계하기
____함수적인 관점에서 더 깊이 살펴보기
____서비스 내포시키기
__WSGI 표준
____WSGI 처리 도중에 예외 발생시키기
____실용적인 WSGI 애플리케이션
__웹 서비스를 함수로 정의하기
____WSGI 애플리케이션 만들기
____원데이터 얻기
____필터 적용하기
____결과 직렬화하기
____데이터를 JSON이나 CSV로 직렬화하기
____데이터를 XML로 직렬화하기
____HTML로 데이터 직렬화하기
__사용량 추적하기
__요약
16장, 최적화와 개선
__메모이제이션과 캐싱
__메모이제이션 특화시키기
____꼬리재귀 최적화
__메모리 최적화
__정확도 최적화
____고객의 요구에 맞춰 정확도를 감소시키기
__사례 분석 - 카이 제곱을 사용한 결정
____원데이터를 Counter 객체를 사용해 걸러내고 축약하기
____요약한 데이터 읽기
____Counter 객체에서 확률 계산하기
____다른 요약 방법
__예상 값을 계산하고 분할표 표시하기
____카이 제곱 값 계산하기
____카이 제곱 문턱값 계산하기
____부분 감마 함수 계산하기
____완전한 감마 값 계산하기
____임의적인 분포의 확률 계산하기
__요약