본문내용 바로가기
MD의선택 무료배송 이벤트 사은품 소득공제

함수형 파이썬 프로그래밍 파이썬으로 배우는 쉬운 함수형 프로그래밍

acorn+PACKT 시리즈
스티븐 로트 지음 | 오현석 옮김 | 에이콘출판 | 2017년 02월 28일 출간
클로버 리뷰쓰기
  • 정가 : 30,000원
    판매가 : 27,000 [10%↓ 3,000원 할인]
  • 혜택 :
    [기본적립] 1500원 적립 [5% 적립] [추가적립] 5만원 이상 구매 시 2,000원 추가적립 안내 [회원혜택] 회원 등급 별, 3만원 이상 구매 시 2~4% 추가적립 안내 [리뷰적립] 리뷰 작성 시 e교환권 최대 300원 추가적립 안내
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    01월 24일 출고 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내 바로드림 혜택
    휴일에는 바로드림 픽업으로 더 빨리 받아 보세요. 바로드림 혜택받고 이용하기

이 책의 이벤트

해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
  • 에이콘 도서 3만원 이상 구매 시 메모리게임 카드pack 선택가..
    2022.01.10 ~ 2022.02.09
  • 기술스택 별 개발자 채용공고 비중 공개+추천도서!
    2021.12.24 ~ 2022.12.31
  • 다른 개발자들은 무슨 책 읽고 있을까?
    2021.12.02 ~ 2022.12.31
상품상세정보
ISBN 9788960779761(8960779768)
쪽수 436쪽
크기 188 * 235 * 32 mm /1016g 판형알림
이 책의 원서/번역서 Functional Python Programming: Create succinct and expressive implementations with functional progra / Steven F. Lott

책소개

이 책이 속한 분야

파이썬은 배우기 쉽고 확장성과 생산성이 높은 언어로 다양한 분야에서 활용된다. 파이썬의 여러 기능 중에는 함수형 프로그래밍과 잘 어울리는 것이 많다. 이 책 『함수형 파이썬 프로그래밍』에서는 최근 인기가 높아진 함수형 프로그래밍 기법을 파이썬으로 적용하는 방법을 알려준다. 먼저 함수형 프로그래밍에 대해 소개하고, 일급 시민 함수와 고차 함수 등 기본적인 함수형 프로그래밍 개념을 파이썬으로 활용하는 방법을 설명한 다음, 제네레이터나 이터레이터 등을 활용해 성능과 개발 편의성을 동시에 잡을 수 있는 함수형 프로그래밍 기법을 알려준다. 그 과정에서 데이터 탐색과 관련된 다양한 예제를 통해 데이터를 정리하고 준비하는 함수형 프로그래밍 기법이 인공지능이나 머신 러닝에서 활용할 때 아이디어를 간결하고 우아하게 코딩할 수 있는 좋은 도구가 될 수 있음을 보여준다.

작가의 말

파이썬은 다양한 함수형 프로그래밍 기능을 제공하며 배우기 쉽고 확장하기 쉬운 프로그래밍 언어다. 파이썬은 다양한 데이터 과학 분야의 애플리케이션에서 사용하기에 이상적이다.
실용적인 이 안내서는 다양한 함수형 프로그래밍 기법과 디자인 패턴을 파이썬으로 구현하는 방법을 보여준다. 일반적인 함수형 프로그래밍 개념을 살펴보는 것부터 시작해서, 일급 계층 함수나 고차 함수, 순수 함수 등의 함수형 기능과 그런 기능을 파이썬으로 만드는 방법에 대해 배우게 될 것이다. 추가로, 파이썬에서 일반적인 함수형 최적화를 처리할 수 있는 방법도 보게 된다. 더불어 데이터를 준비와 탐구 기법을 자세히 살펴본다. 더 나아가, 파이썬 표준 라이브러리의 기능이 함수형 프로그래밍 모델에 어떻게 잘 들어맞을 수 있는지 배울 것이다. 그 후 PyMonad 프로젝트와 대규모 시스템에 대한 몇 가지 예제를 사용해 마무리할 것이다.
이 책을 다 읽고 나면, 함수형 프로그래밍이 어떤 것인지와 프로그래밍 과정에 함수형 프로그래밍이 어떤 영향을 끼치는지, 왜 함수형 프로그래밍이 중요한지, 그리고 파이썬으로 함수형 프로그래밍을 어떻게 구현할 수 있는지를 이해할 수 있을 것이다. - 저자

역자가 처음 함수형 프로그래밍 언어인 Standard ML을 접했던 20여 년 전만 해도 함수형 프로그래밍은 (일반 개발자들에게) 낯선 개념이었고, 지원하는 언어도 그리 많지 않았다.
하지만 세월이 지나면서 함수형 프로그래밍 요소를 지원하지 않는 언어를 찾아보기가 어려울 정도로 상황이 바뀌었다. 이제 클로저(람다)나 함수를 반환하는 함수, `map`이나 `fold`, `reduction` 등의 컬렉션 함수나 메소드를 지원하지 않는 언어는 거의 없고, 본격적인 함수형 언어인 스칼라나 클로저, 하스켈 등을 업무에 사용하는 직장이나 개인도 많이 늘어났다. 예를 들어 파이썬에서도 대규모 프로그래밍에서는 객체지향이나 모듈화 등 전통적인 복잡도 관리 기법을 주로 사용하지만, 개별 함수나 식의 계산 등의 소규모 프로그래밍에서는 제네레이터나 이터레이터, 데코레이터와 컬렉션을 사용해 함수적인 접근 방식을 사용하는 경우가 많다.
우리 나라에서도 실용적이면서도 생각을 코드로 표현하고 읽기 쉬운 파이썬을 사용하는 경우가 많이 늘어났다. 전통적인 명령형 코드로 파이썬 애플리케이션을 작성하는 것도 즐거운 일이지만, 함수형 프로그래밍을 좀 더 배우고 그것을 적재적소에 활용할 수 있다면 더 많은 재미와 더 높은 생산성을 함께 즐길 수 있을 것이다. 이 책은 바로 그런 개발자를 위한 것이다.
전통적인 명령형 프로그래밍에 익숙한 개발자들이 함수 프로그래밍을 사용하기 시작할 때 배워야 할 기본적인 코딩 방식과 개념이 몇 가지 있다. 또한, 처음부터 함수 프로그래밍을 지원하기 위해 만들어진 함수 언어와 달리 파이썬에서 함수 프로그래밍을 활용할 경우에 알아둬야 할 주의사항도 몇 가지 있다. 이 책은 함수 프로그래밍이 무엇인지 간략히 설명하고, 여러 함수 프로그래밍 기법을 파이썬으로 어떻게 구현하는지를 이해하기 쉬운 예제와 자세한 설명을 곁들여 소개한다. 그 과정에서 파이썬의 특성상 주의해야 할 여러 가지 사항을 알려줌으로써 프로그래머가 함정에 빠지지 않도록 도와준다. 이 책을 읽고 코드를 작성해 본 독자들은 곧 함수형 프로그래밍의 재미에 빠져들고, 실무에서도 다양한 부분에 함수형 프로그래밍 기법을 사용할 수 있게 될 것이다. 또한, 최근 각광받는 머신 러닝이나 인공지능에서 파이썬이 자주 사용되는 경향을 반영해, 탐색적 자료 분석 예제를 통해 통계를 처리하고 데이터에 숨어있는 경향을 분석하는 작업에 파이썬 함수형 프로그래밍을 어떻게 활용할 수 있는지를 맛보게 해준다.
자바와 C/C++만 강조하던 우리나라 전산 환경에 다양한 언어들이 도입되고, 개발자들이 한 언어의 패러다임에 매몰되지 않고 다양한 패러다임을 접하고 활용하는 것은 매우 바람직한 일이라 생각한다. 새로운 언어나 패러다임을 배우는 것은 그 자체로도 재미있을 뿐 아니라, 기존에 자신이 알고 있던 언어나 패러다임에 대한 이해를 한 단계 높여주며, 개발 시 사용할 수 있는 연장 통에 새로운 연장을 하나 더 추가함으로써 필요한 작업을 더 쉽게 처리하게 해준다. 아무쪼록 이 책이 독자 여러분이 조금 더 나은 프로그래머로 한 단계 올라가는 데 기여할 수 있기를 바란다. - 역자

목차

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 객체에서 확률 계산하기
____다른 요약 방법
__예상 값을 계산하고 분할표 표시하기
____카이 제곱 값 계산하기
____카이 제곱 문턱값 계산하기
____부분 감마 함수 계산하기
____완전한 감마 값 계산하기
____임의적인 분포의 확률 계산하기
__요약

출판사 서평

★ 이 책에서 다루는 내용 ★

■ 파이썬의 제네레이터 함수와 제네레이터 식을 사용해 엄격하지 않은 방법으로(지연 계산을 활용) 컬렉션을 다루는 방법
■ itertools, functools, multiprocessing, concurrent.futures 등 파이썬 라이브러리 모듈을 사용한 효율적인 함수형 프로그램 작성 방법
■ 객체지향적인 전위 표기법과 후위 표기법을 통해 파이썬 문자열을 활용하는 방법
■ 튜플 종류를 활용해 상태가 있는 클래스 사용을 피하는 방법
■ 합성 함수를 만들기 위해 데코레이터를 설계하고 구현... 더보기

Klover 리뷰 (0)

북로그 리뷰 (0) 쓰러가기

북로그 리뷰는 본인 인증 후 작성 가능합니다.
책이나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 내용은 비공개 처리 될 수 있습니다.
※ 북로그 리뷰 리워드 제공 2021. 4. 1 종료

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매 후 문장수집 작성 시, 리워드를 제공합니다. 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①서양도서-판매정가의 12%, ②일본도서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

이 책의 원서/번역서

안내

이 책의 연관도서

더보기+
바로가기
  • 우측 확장형 배너 2
  • 우측 확장형 배너 2
최근 본 상품