메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

진지한 파이썬

파이썬 작동 원리에서 확장, 테스트, 배포, 최적화까지

한빛미디어

번역서

판매중

  • 저자 : 쥘리앵 당주
  • 번역 : 김영하
  • 출간 : 2021-01-25
  • 페이지 : 308 쪽
  • ISBN : 9791162243794
  • 물류코드 :10379
  • 초급 초중급 중급 중고급 고급
4.5점 (28명)
좋아요 : 3

 파이썬 고수가 되고 싶은 개발자를 위한 실전 프로그래밍 지침서 

코드는 적게, 작동은 쉽게, 유지 보수는 편하게 

 

파이썬 실력을 높이고 싶은 이를 위한 비법서로, 파이썬으로 15년 넘게 개발해온 저자가 파이썬의 기능과 능력을 제대로 활용해 프로그램을 체계적으로 구축하는 방법을 소개한다. 멀티스레딩, 효율적으로 반복을 처리하는 방법 등의 고급 주제를 다루며, 일반적으로 범하는 실수를 피하는 방법도 알려준다. 문서화, 버전 관리, 시간대 설정 방법, 패키징, 테스트, 배포, API, 데이터베이스 처리 등 개발에 필요한 필수 지식뿐 아니라 유명 파이썬 개발자들의 경험담까지 담았다. 이 책으로 유지 보수하기 쉽고 확장성이 뛰어난 파이썬 프로그램을 만드는 방법을 익히고, 진정한 고수로 거듭나길 바란다.

 

 

대상 독자

  • 파이썬 실력을 더 키워 중고급 개발자가 되고 싶은 사람
  • 파이썬 내장 기능을 제대로 활용하고 싶은 사람
  • 파이썬 소스 코드를 효율적으로 개선하고 싶은 사람
  • 프로젝트 문서화 등 프로그램의 완성도를 높이는 방법까지 연구하고 싶은 사람

 

 

주요 내용

  • 모듈, 라이브러리, 프레임워크와 함께 파이썬 작동 원리 이해하기
  • 프로젝트 문서화와 API 관리 방법
  • 문서 자동화를 위한 스핑크스 사용법
  • 시간 정보와 시간대를 다루는 방법
  • 단위 테스트, 가상 테스트, 테스트 자동화와 배포 기법
  • 메서드와 데커레이터를 만들고 사용하는 방법
  • 파이썬으로 구현할 수 있는 함수형 프로그래밍 기법
  • 추상 구문 트리(AST), Hy, 리스프, flask8을 사용하는 방법
  • 자료구조, 함수, 동적 성능 분석으로 성능을 최적화하는 방법
  • 확장성 있는 프로그램을 위한 멀티스레딩, 멀티프로세싱, asyncio 활용법
  • 관계형 데이터베이스와 PostgreSQL을 사용하는 방법

 

 

출판사 리뷰

 

어떻게든 작동하는 프로그램이 아니라, 

제대로 된 프로그램을 만들어보고 싶은 당신을 위한 책

이 책은 단순히 파이썬을 잘 쓰는 방법만 소개하는 책이 아니다. 파이썬 개발자가 더 나은 방식으로 유지 보수하기 쉬운 프로그램을 만들기 위해 무엇을 어떻게 해야 하는지에 대한 깊이 있는 고민을 담은 책이다. 저자는 다년간 파이썬 프로젝트를 진행해본 경험이 풍부한 오픈소스 개발자로, 수년에 걸쳐 이 책을 집필했다. 효율적인 코드를 작성하기 위해 파이썬 언어의 작동 원리를 살펴보고, 표준 코딩 스타일을 지키는 방법을 안내하며, 프로젝트를 위한 디렉터리 구성 방법, 표준 라이브러리 사용법, 간편한 문서화 방법 등을 안내한다. 단순히 작동만 하는 프로그램이 아니라 유지 보수하기 쉽고 확장성이 뛰어난 프로그램을 만들기 위한 실전 팁도 소개한다. 또한 파이썬 주요 라이브러리, API, 도구를 개발한 유명 개발자들의 인터뷰도 실었다. 선배 개발자들이 어떤 고민을 가지고 자신의 프로젝트를 시작했으며, 그 고민을 어떻게 해결했는지 이야기를 따라가다 보면 그동안 아무 생각 없이 써오던 파이썬 라이브러리와 도구들을 달리 바라보게 될 것이다.

이 책은 반드시 순서대로 읽을 필요는 없다. 각 장에서 다루는 주제가 분명하므로 업무와 프로젝트에 바로 필요한 부분을 바로 찾아 읽어도 된다. 이 책을 통해 파이썬의 여러 기능을 제대로 익히고 자신만의 개발 경험담을 쌓아가는 진정한 고수가 되길 바란다.

 

 

추천사

 

파이썬으로 프로그램을 개발하면서 마주친 에러들에 대해 잘 모르는 부분이 있었습니다. 이 책을 읽으면서 그 수수께끼를 풀 수 있게 되었습니다. 특히, 스핑크스 기반 문서화와 setup.py를 만드는 방법은 효율적으로 소프트웨어를 배포하고 API를 문서화하는 데 큰 도움이 됐습니다. 또한 유명 개발자 인터뷰에는 성공과 실패의 경험담과 파이썬 라이브러리를 설계하려는 사람들에게 도움이 되는 고견을 담고 있어, 책을 읽는 동안 멘토들에게 도움을 받는 느낌을 받았습니다. 잘하지만 더 잘하고 싶을 때, 즉 진정한 파이썬 고급 개발자가 되고 싶을 때 마중물이 되어줄 수 있는 책입니다. 

__ 박서희, KT

 

파이썬을 다루다 보면 ‘파이써닉’하게 프로그래밍해야 한다는 이야기를 자주 듣습니다. 파이썬의 기능을 최대한 활용해야 다른 언어 대신 파이썬을 사용하는 의미가 있으니까요. 파이썬으로 프로젝트를 하면서 자신감이 한창 차오를 때 이 책을 만난다면 자신감이 조금 꺾일 수도 있습니다. 하지만 이 책을 공부하고 파이써닉하게 프로그래밍하는 방법을 익힌다면 더 성장한 프로그래머가 될 것입니다. 이 책에서는 데커레이터, API 문서화, 시간대 등 깊이 고민해보지 않았거나, 문제가 되는지 생각하지 못했던 것들을 잔뜩 만나게 됩니다. ‘난 지금까지 어떤 공부를 한 걸까’ 하고 생각하게 될 수도 있지만, 자신감을 잃지 않고 실습하며 완독한다면 파이썬 실력을 더 높은 단계로 올릴 수 있을 것입니다.

__ 시한, VAIS 인공지능 오픈채팅 커뮤니티 운영진

 

정말 많은 소프트웨어를 개발했습니다. 많은 언어를 사용했고 파이썬도 그중 하나였습니다. 파이썬을 이용하여 기능 구현에만 집중했고, 잘 작동되니 파이썬을 잘 사용하고 있다고 생각했습니다. 하지만 이 책을 읽고 ‘내가 과연 파이썬을 파이썬답게 잘 쓰고 있는가?’라는 의문이 들었습니다. 이 책은 단순한 코딩을 넘어 프로젝트의 구조, 버전 관리 등 코딩 외적인 것까지 파이썬답게 관리하는 방법을 제시합니다. 파이써닉하다는 말의 의미를 이제야 진정으로 이해하게 되었습니다.

__ 오정민, 숭실대학교

 

자바 중급서에 『이펙티브 자바』가 있다면 파이썬에는 『진지한 파이썬』이 있습니다. 파이썬 기본서로 공부하고 실무에 뛰어들면 고전하게 됩니다. 실무에서 개발하는 프로그램은 ‘Hello World’ 같은 게 아니니까요. 기본이 중요하지만 프로 개발자가 되려면 테크닉도 필요합니다. 이 책은 프로그램을 더 잘 만들기 위한 방법과 조언을 잘 설명하고, 여러 개발 방법론을 소스 코드에 어떻게 적용하고 실무에 활용하는지 알려줍니다. 개발할 때 마주하는 문제에 대해서도 어떻게 해결해야 하는지 여러 예시를 통해 해결 방법을 제시합니다. 파이썬을 좀 더 파이썬답게 쓰며 실력을 한 단계 더 업그레이드하고 싶다면 이 책을 읽어보길 적극 추천합니다.

__ 이석곤, 엔컴(주) 프로젝트팀

 

코로나19로 의료를 포함한 여러 분야에서 비대면 서비스 개발을 위해 다양한 프로젝트가 진행되고 있습니다. 이 책은 그러한 프로젝트들을 더욱 깔끔하고 멋지게 만들기 위해 파이썬을 정말 ‘진지하게’ 다루는 법을 알려줍니다. 유용한 모듈, 라이브러리와 메서드, 데커레이터의 고급 활용법으로 개발 프로젝트를 진행하다 마주하는 문제들에 대한 해결책을 제시해줍니다. 또한 개발한 소프트웨어의 테스트부터 성능 최적화, 문서화와 API 관리, 배포까지 효율적으로 진행하는 방법을 설명하여, 프로젝트의 완성도를 높이고 다른 개발자와의 공유를 더욱 용이하게 해줍니다. 구상 중인 개발 프로젝트에서 파이썬을 좀 더 세련되게 써보고 싶은 이에게 이 책을 적극 추천합니다.

__이현훈, 한의사전문의, 경희대학교 임상한의학과 박사과정

 

파이썬은 훌륭한 프로그래밍 입문 언어이자 실무에서도 활발히 쓰이는 명실상부한 인기 언어입니다. 이 책은 파이썬의 기본 문법을 숙지하고 기본적인 프로그래밍이 가능한 프로그래머가 중급자가 되기 위해 알아야 할 필수 내용을 예제와 함께 담고 있습니다. 특히 실무에서 여러 사람과 함께 개발할 때 필요한 문서화, 모듈과 라이브러리, 배포, 테스트부터 고급 프로그래머가 되기 위한 성능 최적화, 확장, 함수형 프로그래밍까지 다양한 내용을 고루 다루는 흔치 않은 책입니다. 파이썬을 파이썬답게 사용하며 고급 기법을 프로젝트에 적용하고 싶은 이에게 이 책을 추천합니다.

__이호상, SK텔레콤

 

파이썬 프로젝트를 시작하기 위해 필요한 기본적인 지식부터 최적화 등의 고급 기술에 이르기까지 『진지한 파이썬』 한 권으로 모두 배울 수 있습니다. 특히 책의 후반부에서는 개발을 오랜 시간 경험하지 않은 초심자라면 접하기 어려운 여러 기술과 기법들이 이해하기 쉽게 설명되어 있습니다. 진지하게 파이썬 프로젝트에 임해보고 싶다면 이 책을 읽어보길 권합니다.

__전준형, 티맥스

 

주위에 물어보고 싶었지만 대답해줄 고수조차 찾기 힘들었던 실무 난제들의 해답이 한 권에 모두 담겨 있습니다. 데커레이터, 제너레이터, 코루틴 등의 ‘파이써닉’한 활용을 위한 조언부터 프로파일링 기법, 메모이제이션을 통한 최적화, 멀티 프로세싱을 고려한 확장에 이르기까지 오픈스택 프로젝트 팀 리더 출신의 저자가 일목요연하게 정리해줍니다. 약 300쪽의 가벼운 분량으로 고수들만 아는 기법들을 빠르게 훑어볼 수 있으며 파이썬 2, 3 등 버전에 따른 변화를 파악하기 쉽습니다. 또한 각 장의 말미에 있는 파이썬 고수들의 인터뷰에서 살아 있는 파이썬을 생생하게 느낄 수 있습니다. 파이썬 엔지니어라면 꼭 읽어보길 권합니다.

__허민, 한국외국어대학교 정보지원처

쥘리앵 당주 저자

쥘리앵 당주

20년 가까이 자유 소프트웨어 해커로 활동하며, 파이썬으로 소프트웨어를 개발했다. 250만 줄이 넘는 코드가 파이썬으로 작성된 거대 오픈소스 오픈스택(OpenStack)의 분산 클라우드 플랫폼을 위한 프로젝트의 팀 리더로 일했다. 클라우드 개발 일을 하기 전에 윈도우 관리자를 개발했으며, 데비안(Debian)과 GNU 이맥스(Emacs)와 같은 다양한 소프트웨어 프로젝트에 기여했다.

김영하 역자

김영하

새로운 기술에 관심이 많은 개발자이자 번역가. 삼성SDS, 미래에셋증권, GS홈쇼핑 등 기업에서 다양한 프로젝트에 참여해 실무 경력을 쌓았다. 현재는 디플러스에서 데이터 분석 연구원으로 일하며, 주로 인공지능과 데이터 분석 분야 강사로 활동한다. 새 기술과 최신 정보를 공유하고자 『안전한 인공지능 시스템을 위한 심층 신경망 강화』(한빛미디어, 2020), 『Do it! 데이터 분석을 위한 판다스 입문』(이지스퍼블리싱, 2018), 『파이썬 웹 스크래핑』(2017), 『Splunk 앱 제작과 대시보드 개발』(2016, 이상 에이콘출판사), 『뷰티풀 자바스크립트』(2016), 『누구나 쉽게 배우는 스몰베이직』(2016, 이상 비제이퍼블릭) 등을 번역했으며, EBS 이솦에서 데이터 분석 컨텐츠를 제작한다.

CHAPTER 1 프로젝트 시작하기

1.1 파이썬 버전

1.2 프로젝트 잘 설계하기

1.3 버전 번호 매기기

1.4 코딩 스타일과 자동 검사

1.5 인터뷰: 조슈아 할로와 파이썬에 대해

 

CHAPTER 2 모듈, 라이브러리, 프레임워크

2.1 임포트

2.2 유용한 표준 라이브러리

2.3 외부 라이브러리

2.4 패키지 설치: pip로 더 많은 것 얻기

2.5 프레임워크 사용 및 선택하기

2.6 인터뷰: 파이썬 코어 개발자 더그 헬먼과 라이브러리에 대해

 

CHAPTER 3 문서화와 모범 API 사례

3.1 스핑크스로 문서화하기

3.2 마치며

3.3 인터뷰: 크리스토프 드 비엔과 API 개발에 대해

 

CHAPTER 4 시간 정보와 시간대 다루기

4.1 시간대가 없는 경우의 문제

4.2 datetime 객체 생성하기

4.3 dateutil로 시간대 정보가 있는 시간 정보 생성하기

4.4 시간대 정보가 있는 datetime 객체 직렬화하기

4.5 애매한 시간대 처리하기

4.6 마치며

 

CHAPTER 5 개발한 소프트웨어 배포하기

5.1 간단하게 설명하는 setup.py의 역사

5.2 setup.cfg를 이용한 패키징

5.3 Wheel 형식의 배포 표준 

5.4 작업물 공유하기

5.5 진입점

5.6 마치며

5.7 인터뷰: 닉 코글런과 패키지에 대해

 

CHAPTER 6 단위 테스트

6.1 테스트 기본 사항

6.2 가상 환경

6.3 테스트 정책

6.4 인터뷰: 로버트 콜린스와 테스트에 대해

 

CHAPTER 7 메서드와 데커레이터

7.1 데커레이터 사용 방법과 데커레이터의 사용 시기

7.2 파이썬에서 메서드가 작동하는 방법

7.3 정적 메서드

7.4 클래스 메서드

7.5 추상 메서드

7.6 정적, 클래스, 추상 메서드 혼합하기

7.7 마치며

 

CHAPTER 8 함수형 프로그래밍

8.1 순수 함수 만들기

8.2 제너레이터

8.3 리스트 컴프리헨션

8.4 함수형, 함수, 함수화

8.5 마치며

 

CHAPTER 9 AST, Hy, 리스프 계열 속성

9.1 AST 살펴보기

9.2 AST 검사로 flake8 확장하기

9.3 Hy 살펴보기

9.4 마치며

9.5 인터뷰: 폴 탈리아몬테와 AST, Hy에 대해

 

CHAPTER 10 성능과 최적화

10.1 자료구조

10.2 프로파일링으로 내부 동작 이해하기

10.3 효율적으로 함수 정의하기

10.4 정렬된 리스트와 bisect

10.5 네임드튜플과 슬롯

10.6 메모이제이션

10.7 더 빠른 파이썬 PyPy

10.8 버퍼 프로토콜로 제로 복사하기

10.9 마치며

10.10 인터뷰: 빅터 스티너와 최적화에 대해

 

CHAPTER 11 확장과 구조

11.1 파이썬의 멀티스레딩과 한계

11.2 멀티프로세싱과 멀티스레딩

11.3 이벤트 반응형 아키텍처

11.4 또 다른 방법 asyncio

11.5 서비스 지향 아키텍처

11.6 ZeroMQ로 프로세스 간 통신하기

11.7 마치며

 

CHAPTER 12 관계형 데이터베이스 관리

12.1 RDBMS과 ORM의 사용 시기

12.2 데이터베이스 백엔드

12.3 플라스크 및 PostgreSQL을 사용한 데이터 스트리밍

12.4 인터뷰: 디미트리 퐁텐과 데이터베이스에 대해

 

CHAPTER 13 효율적으로 코딩하기

13.1 파이썬 2와 3을 지원하는 six 사용하기

13.2 파이썬으로 구현한 리스프를 사용하여 단일 디스패처 만들기

13.3 콘텍스트 관리자

13.4 attr로 상용구 사용하기

13.5 마치며

 

업무로 파이썬을 쓴 지 벌써 5년째인데, 그동안은 파이썬으로 만든 프로그램을 패키징할 필요가 없었습니다. 하둡, 스파크 등 서버에서 동작하면 그만이었습니다. 그러다 최근에 서버가 아닌 곳에 배포할 필요가 생겼습니다. 당연히 구글 검색해 보면 자료가 많이 나와서 그런가 보다 하고 있다가 이 책을 만났습니다.

이 책은 입문단계를 벗어난 파이썬 초보 개발자가 업무로서 체계적으로 노하우를 축적하며 협업하기 위한 소양을 갖추도록 합니다. Java, Spring Framework로 개발하던 사람들은 Python에서도 일대일 대응하는 도구나 개념이 있길 바라는데 그 정도는 다 갖췄다고 잘 설명해 줍니다. 책 내용을 숙지했다면 어디 가서 파이썬 개발 업무로 모르는 건 어지간해서는 없는 인재가 되지 않을까 합니다.

제가 특히 감탄한 부분은 배포, 단위 테스트, 데커레이터, ORM이었습니다. 이제까지 제가 야매로 해왔기에 모르는 부분이 많다는 건 잘 알았습니다만, 뭐가 비었는지 명쾌하게 알지 못했습니다. 이 책을 찬찬히 보니 제가 파이썬으로 좀 더 원숙할 수 있겠다는 생각도 들었습니다. 선배 역할을 해주는 책이라 하겠습니다.

 

파이썬은 이제 프로그래머들만의 전유물이 아니다.
학생, 교수는 물론이고 금융 전문가, 의사들도 사용하고 있다.
학교에서 뿐만 아니라 사회 각 분야의 실무 현장에서도 활발하게 사용되고 있다.
 
시중에 나와 있는 파이썬 책들은 기본서 성격이 강하거나, 머신러닝 등에 특화된 부분만을 강조하고 있다.
파이썬, 그 자체의 고급스러운 기법을 배울 수 있는 책이 많지 않다.
이 책 '진지한 파이썬'은 파이썬의 고급 기법에 목말라 있던 분들에게 단비와 같은 책이다.
 

python.jpg

 

 
앞서 말했듯이 이 책은 이제 막 파이썬에 입문하고자 하는 분들에게는 적합한 책이 아니다.
하지만 파이썬을 고급스럽게 사용하려는 분들은 꼭 봐야 할 책이다.
 
파이썬을 개발하면 피할 수 없는 단어가 있다.
바로 '파이써닉(Pythonic)'이다.
파이썬스러운 코드란 의미이다.
그나마 파이썬은 문법이 정해져 있기에 개발자의 성향을 많이 드러낼 수 없는 편이다.
그럼에도 파이썬스러운 코드를 짜기 위해 많이 노력한다.
이 책을 보면서 '파이써닉'이 무엇인지를 배울 수 있었다.
잘 작동하기는 하지만, 혼자 뚝딱뚝딱거렸던 나의 코딩의 부족한 부분이 무엇인지를 알 수 있었다.
 
특히 문서화와 모범 API 사례, 메서드와 데커레이터, 함수형 프로그래밍, 성능과 최적화, 확장과 구조는 파이썬에 대한 나의 생각을 한층 업그래이드 시켜주었다.
(이렇게 적고 보니 대부분이라고 해도 틀린 말이 아닐 것 같다.)
 
나처럼 코드리뷰도 못하고, 직접 가르침을 받을 수 없는 사람들에게 아주 멋진 교사의 역할을 하는 책이다.
중간중간에 있는 고수들의 인터뷰는 파이썬에 대해 더 깊은 이해를 할 수 있게 해주었다.
 
표지의 그림처럼 이 책은 당신을 파이썬의 검은띠로 만들어 줄 것이다.

진지한파이썬.jpg



이책은 파이썬의 기본 문법은 알고있고, 각 파트별 고급 기술을 이해하는데 도움을 준다.

각 파트별 다루고있는 장표별 내용이 다르므로, 관심있는 내용을 주로 접하면 좋을것 같다.

 

 

1장에서는 파이썬 프로젝트를 시작하는데 기본적인 지식을 익히는데 중점을 다루고있다.

pyflakes , pylint 등 코딩 오류를 잡는툴과 스타일 오류를 잡는도구 등 전반적인 설계방법을 다루고 있다.

 

 

2장은 모듈,라이브러리,프레임워크 에 다룬다.

메타 경로 파인더표준 .py 파일뿐만 아니라 지정 객체를 로드할수있는 객체

메타 경로 파인더 객체는 로더 객체를 반환하는 find_module 메서드를 호출해야 한다.

 

 

3장 은 사실상 문서화 표준인 스핑크스 모듈에 대해 다룬다.

 

 

4장은 시간 정보와 시간대 다루기 에 대해 설명한다.

dateutil 과 tzinfo 와 호화 객체를 얻을수 있다고 한다.

 

 

5장은 distlib 를 활용한 개발한 소프트웨어를 배포하는 방법을 다루고 있다.

 

 

6장은 단위테스트에 대해 설명한다 .

pytest 에대해 다루고 있다.

travis ci 깃허브 호스팅 서비스등 다양 한 도구를 설명하고있다.

 

 

7장 메서등와 데커레이터

데커 레이터 는 정적 메서드, 클래스 매서드, 추상 메서드를 만들고 추상 메서드 내에 구현 가능한 코드를 배치할수있는 super 함수를 사용할수있다.

 

 

이책은 파이썬에 대해 사전정보를 알고있고 파이썬에 대해 좀더 깊이 있게 공부하고 싶고, 파이썬 에 대한 성능분석이나 최적화 에 대해 공부하고싶은 사람에게 이책을 추천한다.



 

undefined

 

 

부제) 파이썬 작동 원리에서 확장, 테스트, 배포, 최적화까지 

 

책의 제목과 부제가 정말 적절하다고 생각했다. 

파이썬을 진지한 자세로 대하려는 사람들에게 작동원리부터 실제적인 도구들을 익힐수 있도록, 

즉 파이썬을 배우는 것을 넘어서 파이썬 고수가 되기 위해 알아야 할것들을 위한 책이었다. 

 

한마디로 딱 떠오르는 느낌은 정말 실용적이다! 였다. 

 

책의 구성에서 재미있는 점은 챕터가 끝날때마다 간간히 챕터의 내용과 관련된 인터뷰가 있다는 것이었다. 

예를 들어 Hy에 대한 내용 이후 Hy를 만든 폴 탈리아몬데에게 어떻게 만들게 되었는지, 

장단점이 무엇인지 등에 대해 물어보는 것 등 원작자에게 자세한 배경과 철학을 얻을수 있는 부분이 많았다. 

 

특히 도움이 되었던 챕터는    

 

> 3장 문서화와 모범 API사례 

문서화는 보통의 문법에 대한 책이었다면 다루지 않았을 것 같은데, 사실은 제대로된 파이썬 프로젝트를 위해 가장 중요한 부분이었던 것 같다. 

간과했던 자신이 많이 반성되는 부분이었다. 

스핑크스 모듈로 코드와 문서를 따로 작성해야 하는 비효율을 해결하며, 코드와 문서를 분리하지 않으면서 동시에 관리할수 있는 팁을 얻었다.   

 

> 그리고 5장 개발한 소프트웨어 배포하기  

배포를 위한 setup.py의 역사나 Wheel이라는 도구에 대해 알수있었다. 

 

책의 세세한 내용을 하나씩 프로젝트에 적용해보면서 개선시키는 것이 이 책을 흡수하기에 가장 좋은 방법이라고 생각하고 

그렇게 한다면 좀 더 파이썬 고수가 될수 있을것 같다는 느낌을 받았다.

부제) 파이썬 작동 원리에서 확장, 테스트, 배포, 최적화까지

 혹시 파이썬으로 개발 업무를 하다가 막 한계가 느껴진 경우가 있을지 궁금하다. 사실 나도 회사에서는 파이썬으로 작업을 많이 하지만, 일반적인 업무를 하는데 있어서는 그냥 여타 파이썬 입문책에 나와있는 문법이나 기법으로 해결되는 경우가 많다. 그런데 문제는 성능을 개선하려고, 다른 오픈소스 코드를 분석하다 보면, 앞에서 많이 봤던 그런 입문책에서는 소개되지 않는 문법이나 패키지들이 사용된다는 점이다. 특히 나같은 경우는 멀티프로세싱과 멀티스레딩 관련 부분이 많이 막혔고, 이를 온라인에 나와있는 예제나 개발문서만 보고 구현하는 게 너무 어려웠다. 어쩌면 문법만 소개하기에는 이제 파이썬은 많은 시간동안 발전이 이뤄졌고, 수많은 개발자들에 의해서 구현에 필요한 다양한 패키지들이 나왔기에 어쩌면 일반 입문책으로 파이썬의 모든 것을 다루기엔 어려워진 것 같다. 나도 단순히 입문책에서 소개하는 문법보다는 궁극적인 성능이나 개발 효율성을 올릴 수 있는 그런 방법을 배우길 원했고, 그런 입장에서 이 책을 접했다.

 

그림 1. 진지한 파이썬

 

 서두에 언급했던 것처럼 이 책은 입문책이 아니다. 책을 열자마자 나오는 주제는 여타 기초 문법이 아닌, 파이썬으로 패키지 라이브러리를 만들때의 버전 관리와 코딩스타일과 관련된 내용이다. 그래서 혹여나 파이썬을 처음 다루는 사람이라면 이 책보다는 다른 쉬운 책을 권하지만, 뭔가 파이썬으로 작업을 많이 하고, 전반적인 성능 개선 / 패키징 / 테스트에 관심이 많은 사람이라면 오호? 하는 생각이 들지 모른다. 그만큼 책에서 다루는 내용이 심오하고, 실무에 써먹을 수 있을만한 내용들이 많다. 간단하게 책에서 다뤄지고 있는 주제는 다음과 같다.

- 모듈, 라이브러리, 프레임워크 개발/관리
- sphinx를 활용한 문서화 및 API 관리
- datetime을 이용한 시간 정보 처리
- pytest / tox를 이용한 단위테스트와 의존성 검사
- 함수형 프로그래밍
- decorator
- Hy같은 Abstract Syntax Tree (AST) 이해
- 최적화
- 멀티스레딩/멀티프로세싱, asyncio
- RDB

그리고 특이하게 각 장별로 해당 주제에 대한 전문가와의 인터뷰가 담겨져 있다. 사실 책에서 다뤄지는 주제들이 약간 전문성이 있다보니, 단순히 내용과 예시만 소개되는 것보다도 해당 패키지를 사용하는 전문가가 겪는 어려움이나 팁에 대한 소개가 나와있어, 딱 내용이 와닿았다.

 개인적으로 관심있게 읽은 부분은 최적화부분이었다. 사실 회사에서 많이 하던 일도 하드웨어와 실시간 통신을 하면서 얻은 데이터를 어떻게 처리하는지 여부가 성능에 영향을 많이 미쳤다. 이런 부분에서도 파이썬에서 제공하는 자료형이나 로직을 잘 설계하고, 이 때의 성능을 잘 모니터링할 수 있어도 작업의 효율이나 성능을 올릴 수 있다는 점을 책을 읽고나서 알았다. (한편으로는 그동안 너무 무식하게 코딩했구나 하는 후회도 한편 듦...)

 

그림 2. 실전 스케일링 파이썬 프로그래밍과 진지한 파이썬

 

책의 서두를 읽다보니 알았는데, 사실 이 책은 The hacker's Guide to Scaling Python Programming (실전 스케일링 파이썬 프로그래밍)의 4판으로 나온 책이었다. 앞에서 이야기했던 것처럼, 한창 멀티스레딩 관련 자료를 찾다가 중고서점에서 우연히 딱 집은 책이 이 책이었는데, 2년이 지난 지금 같은 저자가 쓴 책을 읽었던 것이다. 4판인 진지한 파이썬으로 넘어오면서 언급했던 주제인 스케일링 관련 내용은 많이 줄었지만, 조금 더 다양한 주제와 예제로 폭넓게 다뤄졌다. 다만 주제가 넓어지는데 비해 책에서 다뤄진 내용이 딱 기본이 전제된 것을 가정하고 언급된 내용이 많아 처음 접할 때는 조금 어려운 점이 느껴질 수 있을 수 있다.(그리고 개인적으로는 이 주제들이 300여페이지로 설명되기에는 너무 함축되지 않았나 하는 생각이 좀 든다.) 그래도 읽으면서 직접 예제를 다뤄보면, 여타 유명한 패키지내에서 구현되어있던 전혀 생소한 문법과 기법들이 조금씩 이해되는 경험을 하지 않을까 생각한다. 

참고:
혹시나 원서 정보가 궁금하면 원저자가 만든 책 사이트가 있다. 예제를 찾는 사람이라면 이 사이트에서 standard를 구입해보는 것도 권해본다.

 

 

Serious Python — A book on advanced Python development

Who's the Author? Hi, I'm Julien, a Free Software hacker for close to twenty years now. For more than 12 years, I've been developing software using Python. I spent those last years as a Project Team Leader in OpenStack, a distributed cloud platform. It's t

serious-python.com

 

출처: https://talkingaboutme.tistory.com/entry/Book-Serious-python [자신에 대한 고찰]

 

KakaoTalk_20210221_232128279.jpg

 

 

 

이 책은 한빛미디어에서 출간된 진지한 파이썬이라는 책인데, 이 책은 파이썬 소스 코드를 효율적으로 작성하는 방법을 담고 있기 때문에 "파이썬을 이미 알고있는 사람이 파이썬 실력을 높이고 싶을 때" 참고하기 좋은 책이다. 또한 이 책의 목차 순서대로 읽지 않아도 되게끔 구성 되어있어서, 관심 있는 챕터들만 호로록 보면 좋을 것 같다. 사실 이 책의 베타리뷰어로 참여하면서 이 책을 통해 스핑크스 기반 문서화 하는 방법을 배우게 되었는데, 효율적으로 소프트웨어를 배포하고 API를 문서화 하는데 큰 도움이 되었었다.  

 

책의 구성마다 챕터의 내용 다음에 유명한 개발자들의 인터뷰들을 담고 있기 때문에 흥미롭게 읽을 수 있다. 예를 들면 주요 파이썬 버전 사이에서 망설이는 개발자에게 어떤 조언을 해주시겠습니까? 와 파이썬 API를 설계할 때 개발자가 자주하는 실수는 무엇이 있나요? 라는 등의 질문에 대답을 하는 형식으로 되어있어서 마치 개발을 매우 잘하는 멘토에게 도움을 받고 있다는 생각이 들었다. 이 책에 수록된 인터뷰들을 쭉 읽으면서, 구글링 검색으로는 전혀 알 수 없는 깨알 지식들도 담고 있어서 개인적으로 정말 많은 도움이 되었다 ^^. 

 

또한 이 책에서 함수형 프로그래밍에 대해서 다루고 있는데 실무에서 가장 많이 도움이 된 챕터가 아닐까 싶다. 특히 리스트 컴프리헨션(list comprehension 혹은 줄여서 listcomp)은 리스트의 내용을 선언과 인라인으로 정의하게 된다. 리스트 컴프리헨션 뿐만 아니라 map(), filter(), enumerate() 등의 기능 들을 오픈 소스에서 사용하길래 그저 따라하기만 했었는데, 책을 읽으면서 작동원리 및 사용 방법 등에 대해 이해가 완벽히 되었으며, 이를 잘 활용하여 더욱더 효율적으로 코드를 작성해야겠다고 생각했다. 

 

파이썬을 사용한지도 참 오래되었는데 책 속에 모르는 내용들이 많이 있어서 아직 배울게 많다는 생각과 급 반성의 시간을 가졌고, 그 부분을 이 책이 채워줄 수 있을 것 같아서 두고두고 보면 좋을 것 같다는 생각이 들었다. 이 책은 베타 리뷰에도 작성했지만, 파이썬을 잘하지만 더 잘하고 싶을 때, 파이썬 고급 개발자가 되고 싶을 때 마중물이 되어 줄 수 있는 책이다!


 

2021년 기준 파이선은 가장 인기 있는 입문자용 프로그래밍 언어라고 할 수 있다. 간결한 문법 체계와 풍부한 표준 내장 라이브러리, 그리고 커뮤니티는 프로그래밍에 익숙하지 않은 사람이라도 빠르게 애플리케이션이나 서비스를 구현할 수 있을 정도이다.

특히 TensorFlow를 위시한 Deep Learning의 인기와 취업 준비생의 코딩 테스트에서의 파이선 선택자의 좋은 성적이 여러 파이선 입문서, Deep Learning, 그리고 코딩 테스트를 다루는 서적의 출간에 많은 영향을 줬다고 생각한다.

이 책은 위와 같은 인기와는 조금 다르게 어떻게 파이선 기반의 'Product'를 더 잘 만들 수 있을지에 대해서 다루고 있는 책이라고 생각한다. 이러한 유형의 도서 중 하나는 Effective Python인데 해당 도서와 차이점이 있다면, 진지한 파이선의 경우 코드 효율성에 대한 내용만 다루는 것이 아니라 소프트웨어의 생애주기와 관련된 내용도 비중 있게 다루고 있다는 점이다. 단순히 동작하는 프로그램을 만드는 것이 아니라 아래와 같이 좋은 소프트웨어를 만들기 위한 여러 가지 주제를 비중 있게 설명하고 있다.

  • 스핑크스를 활용한 효율적인 문서화
  • 단위 테스트 및 테스트 자동화
  • flask8 과 같은 정적 도구, 그리고 배포

어느 정도 규모가 있는 파이선 서비스를 개발한다면 반드시 고려해야 할 점을 시원하게 긁어주는 내용이 포함되어 있기 때문에 기존에 파이선이 아니라 자바나 다른 기술 스택의 경력자들도 빠르게 학습할 수 있는 장점이 있다.

소프트웨어 생애 주기 외에도 중고급 파이선 사용자들이 궁금해할 부분인 시간 정보, 데커레이터, 그리고 멀티 프로세싱 등 특정 주제를 간결하게 설명하고 있다. 다만, 책에서도 언급했듯이 각 장 하나하나가 하나의 책으로 설명해야 할 정도로 방대한 내용이므로 더 관심이 있는 독자는 진지한 파이선으로 시작해 다른 도서를 더 살펴보는 것을 추천한다.

개인적으로 JVM 기반의 서비스를 많이 개발하다가 최근에 파이선 기반의 서비스 개발에도 참여하고 있는데, 책의 내용 중 일부는 알고 있었고 일부는 몰랐기 때문에 많은 도움이 되었다. 책이 그렇게 두껍지 않고 번역도 매끄럽게 되어있기 때문에 파이선으로 갓 입문한 개발자들에게 더 미려한 소프트웨어 개발을 하는 데 많은 도움을 줄 것으로 보인다.

 

 

KakaoTalk_20210221_191311702.jpg

 

 

파이썬은 계속적으로 쓰임이 많고 인기가 많아 지는 언어 입니다.

업무상 배울일이 생겨 이책을 보게 되었습니다.

초급부다 시작해서 중급 고급까지 볼수 잇는 책입니다.

파이썬을 좀더 구체적으로 공부 하실 분들에게 추천 합니다.

 

 

파이썬의 기본적인 내용만 학습한 상태에서 프로젝트를 진행하게 되면, 유지보수나 문서화 등 많은 부분에서 어려움을 겪게 됩니다.

더 좋은 코드를 만들고 협업을 잘 하기 위해서는 한 단계 더 학습이 필요합니다.

"진지한 파이썬"에서는 문서화, 테스트, 메소드 그리고 성능&최적화 등 초급 프로그래머 들이 알아야 하는 내용들이 압축되어 잘 들어있습니다.

페이지 수가 많지는 않지만 많은 내용들을 담고 있습니다. 그래서 내용들이 자세하고 깊게 설명되어 있지는 않습니다.

파이썬 프로그래머들이 꼭 알고 있어야 하는 내용들이 많이 수록되어 있다는 점이 이 책을 읽기에 충분한 이유가 된다고 생각합니다.

초급 파이썬 프로그래머 분들에게 이 책을 추천합니다.

소스코드 품질평가 기업인 티오베는 매달 프로그래밍 언어 순위인 프로그래밍 커뮤니티 지수 (티오베 인덱스)를 발표하고 있다. 이 지수를 보면 관련 분야 종사자들이 어떤 언어를 가장 많이 사용하는지, 어떤 언어와 관련되어 커뮤니티 활동이 왕성한지를 알 수 있다. 2021년 2월 발표된 티오베 인덱스를 보면 지난 달에서 1,2위가 역전된 것을 알 수 있다. 1위에는 C가, 2위에는 Java가 랭크되었는데, Java의 하락세가 두드러졌다. 최근의 트렌드를 보면 Java의 점유률은 전반적인 하락세를 유지하고 있다. 오라클의 라이선스 정책에 따라 많은 개발자들이 Java에 대해 예전 같은 사랑을 보내고 있지 않고, Java의 대체재들도 많아 지고 있기 때문으로 생각된다. 

 

tiobe_index_202102.png

 

 

 파이썬(Python)은 이 티오베 인덱스에서 2019년 중반부터 3위의 자리를 꾸준히 유지하고 있다. 2020년에 Java를 제치고 2위의 자리에 올라선 적도 있고, 현재 2위 Java와 그 격차가 크지 않은 수준이다. Java 가 전반적으로 하향세라면 파이썬은 우상향 그래프를 나타내고 최근 그 경사가 급격한 편이다. 그만큼 파이썬의 위세가 대단하다 할 수 있다.

 

tiobe_index_202102_02.png

 

 

이렇게 파이썬이 널리 사용되고 인기가 있다 보니 관련 서적도 정말 다양하게 출간되고 있다. 필자도 파이썬과 관련되어 여러 책을 리뷰한 적이 있다. 대부분의 프로그래밍 언어 관련 서적이 그렇듯 파이썬 관련 책들도 기초적인 내용을 다루는 책들이 많다. 입문 서적은 프로그래밍 언어의 아주 기본적인 내용부터 업무에 적용할 수 있는 방법들을 체계적으로 소개하기 때문에, 꼭 필요한 부분이다. 하지만 어느 정도 언어에 익숙해지게 되면, 나오는 고민이 바로 더 나은 프로그래밍 방법에 대한 것이다. 효율적인 프로그래밍 방법을 찾게 되고, 프로그래밍 언어의 철학에 부합되는 설계와 개발 방법을 적용하고 싶어지고, 최적화를 통해 성능을 높이기를 간절히 원하게 된다. 

 

20210221_110805_(1).jpg

 

 

20년 가까이 자유 소프트웨어 해커로 활동하며 파이썬으로 소프트웨어를 개발해 온 쥘리앵 당주(Julien Danjou)가 집필한 ‘진지한 파이썬’ (원제: Serious Python) 은 이러한 욕구에 부합하는 책이다. 이 책의 부제는 ‘파이썬 작동 원리에서 확장, 테스트, 배포, 최적화까지’로 중급을 넘어 고급 파이썬 개발자를 지향하는 이들을 대상으로 하고 있다.

 

책은 모두 13개의 챕터로 구성되어 있다. 일반적으로 개념서나 입문서는 프로그래밍 언어의 특징이나 기능을 하나씩 소개해 나가며 문제를 해결하는 과정으로 집필되기 때문에 순서대로 읽는 것을 권장하지만, 이 책은 기본기가 다져진 개발자를 대상으로 하는 만큼 꼭 순서대로 읽을 필요는 없어 보인다. 자신이 관심 있어 하는 분야에 대해 먼저 읽어보아도 내용을 이해하는 데 무리가 없다. 책이 명시적으로 구분되어 있는 것은 아니지만, 주제의 성격을 보면 책의 전반부와 후반부로 나누어 볼 수 있다. 책의 전반부에서는 파이썬을 이용한 프로젝트를 진행하면서 고려해야 할 사항과 문서화 방법 등에서부터, 시간 정보와 시간대, 개발된 소프트웨어 배포방법, 단위 시험 방법 및 테스트 정책, 메서드와 데커레이터에 대해 다루고 있다. 책의 후반부는 좀더 고급 주제를 다루고 있는데, 함수형 프로그래밍, 리스프 계열 속성, 성능과 최적화, 구조 및 서비스의 확장 방법, 관계형 데이터 베이스 관리에 대해 심도 있는 이야기를 전하고 있다. 책의 마지막 챕터인 13장에서는 효율적으로 코딩하기라는 제목으로 파이썬 2와 3 모두 호환되는 코드 작성법, 리스프 유형의 함수형 프로그래밍 기법 적용 방법, 콘텍스트 관리자 사용하기, attr 라이브러리로 반복을 줄일 수 있는 방법에 대해 소개하며 책을 마무리하고 있다.

 

20210221_141807.jpg

 

이 책의 특징 중 하나는, 해당 주제에 대한 전문가와의 인터뷰가 실려 있다는 것이다. 모든 챕터에 대해서 제공하는 것은 아니지만, 1장에서 조슈아 할로, 2장은 더그 헬먼, 3장은 크리스토프 드 비엔 과의 인터뷰 등, 모두 전문가 8명의 생생한 이야기를 들을 수 있다. 필자의 경우, 9장에 소개된 폴 탈리아몬테와의 인터뷰가 특히 인상적이었다. 폴은 현재 선라이트 재단(Sunlight Foundation)의 개발자로 2013년에 Hy를 만들었다. 그의 인터뷰를 통해 Hy를 만들게 된 과정과  파이썬과의 호환성, Hy를 사용할 때의 장단점을 보다 친근감 있는 언어로 들을 수 있었다.

 

보다 효과적으로 파이썬을 이용하여 개발하고자 하는 개발자라면 꼭 한번 읽어보기를 권한다. 생산성 향상과 함께 문제를 해결할 수 있는 새로운 고급 무기를 장착할지도 모를 일이다.  

 

지나가는 대학생을 대여섯쯤 붙잡고 Python을 아느냐고 물어보면, 그들 중 서넛은 알고 있으며, 그 중에서도 한 두명은 Python을 사용해본 경험이 있을 것입니다. 대학에서 이제 Python은 교양의 영역으로 접어들었기 때문입니다.

 

제가 재학중인 학교에서도, 이미 모든 학부생에게 기초 교양으로 Python 및 데이터과학 관련 과목을 지정하였습니다. 또한 상당수의 타 대학에서도 Python을 활용한 여러 교양/전공 과목을 개설중인 것으로 알고 있습니다. 즉, Python 프로그래밍은 이미 대학 교양 영역의 일부가 되었으며, 요즘 대학생들의 상당수는 Python Idle에서 print("hello world!") 정도는 타이핑 해보았을 것이라 기대할 수 있겠습니다.

 

저 역시 처음 Python IDLE를 켜고, 기초 교재를 따라 코드를 타이핑 해본지도 몇 년이 지났습니다. 물론 그에 비해 실력은 썩 좋지 않고, 아직도 검색을 통해 겨우 겨우 원하는 것을 구현하는 것에 그치는 정도입니다. 하지만, 여러 개발 프로젝트에 참여하는 것 이외의, 어떠한 방법으로 스스로의 Python 실력을 업그레이드 할 수 있을지에 대한 의문은 이미 오래 전부터 가지고 있었습니다.

 

거의 700~800페이지에 육박하는, 시중의 두껍고 무거운 교재는 중급자 이상에게 유효한 내용을 충분히 담고 있을 것이라 기대할 수 있습니다. 하지만, 바쁜 일상에서 이러한 교재를 모두 소화한다는 것은 현실적으로 어려운 일이고, 보통 '백과사전'을 활용하는 형식으로 그때그때 목차를 뒤져보게 되는 것이 대부분의 활용법이 됩니다. 즉, 책 전체를 꼭꼭 씹어서 소화하고, 내것으로 온전히 만들기에는 많은 애로사항이 따릅니다. 

헌데, 이 책은 조금 다릅니다. 겨우 300페이지 남짓한 책인데, 목차 하나하나를 살펴보니 재밌어보이는 주제가 너무 많고, 실제로 한 챕터씩 읽어갈때마다 새로운 지식이 쏙쏙 들어옵니다. 게다가, 걔중에는 바로 프로젝트에 활용할만한 내용도 많습니다.

 

 

 

책의 서문에 따르면, 대상 독자는 이미 파이썬 개발 경험이 어느정도 있는 파이썬 개발자이며, 대상 독자는 본 책을 통해 파이썬을 더 잘 활용할 수 있는 방법을 배울 수 있습니다. 특히 파이썬 코드, 애플리케이션, 테스트, 이식, 확장 등에 대한 노하우를 엿볼 수 있습니다. 그것도, 20년 간의 개발 경력을 가진 저자의 노하우를 말이죠.

 

 

 

파이썬 모듈, 라이브러리, 프레임워크를 가져다가 사용한 적이야 많지만, 이들이 어떤 구조로 되어 있으며, 내부적으로 어떻게 연결되어 돌아가는지, 스스로 개발하여 사용하려면 어떠한 형태를 취하여야 하는지, 깊게 고민해본적도, 실제로 해본 적도 없었습니다. 2장을 읽고 나니, 이미 충분한 지식을 얻게 되었고, 동작 원리도 알 수 있게 되었습니다.

 

요즘 대부분 라이브러리의 문서화는 스핑크스를 사용하여 진행된다고 합니다. 본 책에서도 문서 작업의 자동화를 위한 스핑크스 사용법을 소개하고, 좀 더 편리하게 응용하는 방법까지 소개하고 있습니다. 사실 스핑크스가 무엇인지, 또는 스핑크스를 사용하는 법을 알려주는 포스팅은 이미 웹 상에도 많습니다. 하지만, 이렇게 응용법을 한 눈에 알려주는 글은 그리 많지 않습니다. 특히 국문으로 된 글은 더더욱이요.

 

 

 

저자는 1~13장 까지 차근차근 읽는 것보다, 관심 있거나 현재 프로젝트와 관련 있는 챕터부터 먼저 읽는 것도 좋다고 말합니다. 이미 위에서 목차를 훑어보신 분들은 벌써 어느 정도 관심있는 챕터가 생기셨을텐데요. 만약 내가 현재 진행하는 별도 프로젝트가 없거나, 위 주제들을 어떻게 적용해야 될지 감조차 잡히지 않는 상황이라면, 처음부터 끝까지 쭈욱 읽어 나가는 것도 추천합니다. 

이 경우, 많은 부분들이 이해되지 않을 수 있습니다. 저 또한, 책을 1회독 하며, 이해되지 않는 부분이 곳곳에 존재하였습니다. 이 경우에는 인덱스 포스트잇을 활용합시다. 추후에 포스트잇을 붙인 부분을 좀 더 살펴보고, 찾아보고, 이해하도록 합니다. 시간이 많다면 2회독, 3회독과, 키워드 검색을 병행하여 이해도를 높이는 것도 좋을 것 같습니다.

 

 

 

몇 가지 인상적인 부분도 따로 소개합니다. 이미 파이썬을 어느정도 써보신 분들이라면, 타인이 개발한 오픈소스 프로그램을 본인의 프로젝트에 가져와서 사용하는 경우가 많았을 것입니다. Python은 setup.py 파일을 통해 손쉬운 외부 파이썬 프로그램 설치를 가능케 합니다. 내가 직접 개발한 프로그램의 배포를 실현하기 위하여, 또는 외부 라이브러리 등을 설치할때 오류가 발생할 경우, 단순히 오류를 구글링해서 해결하는 것이 아니라, 좀 더 깊은 이해를 바탕으로하여 해결할 수 있도록 하기 위하여, 본 챕터는 파이썬 개발자에게 반드시 필요한 부분 중 하나라고 생각합니다.

 

 

 

개발을 직업으로 삼고 있는 분들이 아닌, 아직 학부생 레벨의 개발자라면 단위 테스트가 많이 낯설 것으로 생각됩니다. 저 또한, 프로그램 개발에 있어서 자동화된 단위 테스트를 행한다는 것이 조금 낯설었습니다. 하지만, 본 챕터를 읽은 이후에는 조금 더 많은 것이 와닿습니다. 최근에 아예 TDD 방법론을 바탕으로 초급 웹개발을 풀스택으로 진행하는 도서의 베타테스터로 참여한 적이 있었습니다. 만약 본 책의 해당 챕터를 읽은 후였다면, 훨씬 더 와닿는 상태로 리딩을 진행할 수 있었을 것이란 생각도 들었습니다.

 

 

 

대부분의 경우, 합리적으로 저렴한 비용을 지불하여 테스트를 진행할 수 있다는 부록 인터뷰를 보고... 다시 한번 중요성을 실감합니다. 책의 곳곳에 실용적인 인터뷰가 수록되어 있어, 이 부분도 좋았습니다. 인상적인 내용도 많았구요.

 

 

 

표준 라이브러리 모듈 중 하나인 itertools에 관한 내용입니다. 불과 어제도, 프로젝트를 진행하던 중 2차원 리스트 내부에 혼재된 여러 리스트를 한방에 1차원으로 통합할 방법을 고심하다가, 결국 검색을 통해 itertools의 chain 메서드를 활용하여 해결했습니다. 어디서 본 것 같다는 생각이 들었는데, 여기 그대로 있네요. 이때, 본 책을 빠른 시일 내에 여러번 읽고 내것으로 만들어야겠다는 생각을 한번 더 하게 되었습니다.

 

 

 

성능 최적화 파트에서도 여러 사례를 소개합니다. 예컨대 위에 나온 특정 요소가 list 내에 있는지 확인하는 방법에 대한 구현 방법입니다. 훨씬 효율적인 방법으로 구현이 가능함에도, 저 역시 대부분의 케이스에서 저런 비효율적인 코딩을 해왔던 것 같습니다. 당장, 지금 하고 있는 프로젝트에서 스스로 코딩하던 '여러 짓'...들이 비효율적이란걸 깨닫게 되는 부분입니다. 깨달음이 조금씩 깊어져갑니다.

 

아직 초급 수준에 불과한 학부생 개발자이지만, 이런 실력에도 불구하고, 많은 도움을 받을 수 있었던 책이었습니다. 책의 여러 토픽에 대해 어느 정도 알고 계신 분들이라면, 또 다른 시야로 더 많은 도움을 받을 수 있을 것이란 확신이 듭니다.

 

본인의 Python 레벨을 한 단계 더 끌어올리고 싶으신 분들이라면, 

또는 책의 부제 "파이썬 작동 원리에서 확장, 테스트, 배포, 최적화까지"를 보고, 관심이 동하신 분들이라면,

반드시 읽어보시길 강력 추천드립니다! 

 

본 리뷰는 한빛미디어의 도서 서평단 <나는 리뷰어다 2021> 프로그램의 일환으로, 무상으로 도서를 증정 받고 작성된 리뷰임을 고지합니다. 

 

전에 읽었던 "나의 첫 파이썬" 에 이어서 이번에는 "진지한 파이썬" 을 읽게 되었다. 

책 제목에서 느낄수 있듯이 이 책은 파이썬의 진지한(?) 부분에 대해서 설명해 주고 있다. 우선 파이썬이라는 언어의 기본 적인 내용들은 알고 있어야 한다. 기본적인 문법에 대한 내용보다는 파이썬으로 무언가를 만들때 혹은 프로젝트를 구성하는 것부터 시작해서 라이브러리 관리, 문서화, 배포, 테스트, 성능에 관련 된 내용을 담고 있다.

장점과 단점을 몇가지 알아보면 다음과 같다.

장점
- 개발을 하면서 프로젝트의 구조를 어떻게 만들어야 하는지, 그리고 자칫 소홀히 할 수 있는 문서화는 어떻게 해야 하는지 좋은 가이드를 알려준다.
- 다양한 방법의 단위 테스트를 알려주고 있어서 개발시에 상황에 맞게 적용해 볼 수 있다.

단점
- 기초가 튼튼하지 않으면 책을 이해하는데 어렵다.

장점과 단점이 분명히 구분되는 책이지만 단점 같은 경우는 파이썬에 대한 기본 지식이 탄탄 하다면 충분히 커버가 가능하다고 생각된다. 좀더 상위레벨의 코딩을 위해서는 알아두면 좋은 지식들이 많이 담겨져 있는 책이다.

https://blusky10.tistory.com/512

 스크립트 언어로는 파이썬이 바야흐로 최강자의 자리에 이르게 되었다. 요즘학부 출신 신입 사원들에게 C/C++을 코딩할 줄 아냐? 혹은배웠냐고 물어보면 과반수가 해당 내용이 커리큘럼상에서 빠져있다고 한다. 정말 놀랍고 신기한 일이다. 필자의 학부시절에는 C/C++은 기본이었거니와 나아가 어셈블을 배우는것 역시 학교 정규 커리큘럼에 항상 기본으로 포함되어 있었기 때문이다.

 

시대가 그만큼 변한 것인지, 아니면 파이썬이라는 언어 체계가 그만큼잘 잡혀있는 것인지. 아니면 그 두 가지 사항 모두를 만족하는 것인지.그것은 파이썬을 학습한 새대의 판단에 맡겨두기로 하고, 금일은 한빛미디어에서 이번에 출간된 '진지한 파이썬'이라는 책에 관해 리뷰를 하고자 한다.

 

필자의 눈엔 아직도 파이썬은 상당히 신기한 스크립트 언어이다. 아직도네이티브 (이젠 네이티브가 C/C++로 통용되는듯싶다.) 스타일 코딩을 고집하는 내게 메모리 할당도, 타입 정의도 더 이상 '{ }'도 사용하지 않는 파이썬 스크립트는 그동안 필자가 배워온 틀에서 상당히 괴리가 있는 언어이다.

 

하지만 근래 들어? (기간이 꽤 된 것으로 알고 있다.) 코딩 테스트, 프로그래밍 경진 대회 등에서 파이썬 언어를 채택하고있다는 것을 보면, 확실히 파이썬 언어가 대세이고 요즘 트렌드인 것 같긴 하다.

 

【어떤 독자를 위한 책인가】

 

 이 책은 파이썬을 이용한서비스 한 사이클 전체를 총괄한 책이라고 평할 수 있을 것 같다. 파이썬 언어 선택에서부터 API 문서화 관리, TC 관리 그리고 배포와 나아가 심화된 파이썬테크닉에 이르기까지. 말 그대로 파이썬 언어를 이용한 서비스 개발에 필요한 전체적인 사이클을 다루기때문이다. 그렇기에 각각의 챕터에 해당하는 내용의 심도 있는 학습을 위해서는 추가적인 해당 탑픽 관련서적을 참고할 필요가 있어 보인다. (이 책은 고작 300pg이다. 어떤 착은 TC만으로 600pg 분량의내용을 뽑아내는 것을 보면, 얼마나 압축하고 핵심만 추렸는지 대략 가늠해 볼 수 있다.)

 

그렇다고 해서 내용에 아쉬움을 크게 느끼진 못했다. 그만큼 정말 파이썬을이용한 개발에 있어 우리가 놓치기 쉬운 팁들, 개발자들이 자주 하는 실수 그리고 우리가 궁금해할 요소들에관해 인터뷰 형태로 보충 설명해 주고 있기 때문이다.

 

따라서 필자가 생각하기에 이 책은 어느 정도 서비스 개발에 관한 경험이 있고 파이썬 문법에 관해서는 기본적 소양을갖춘 그런 초-중급 사이의 개발자들이 읽기에 좋은 책이라 생각된다. 물론고급 개발자도 해당 책을 통해 많은 것을 얻어 갈 수 있을 것이라 생각된다. (꼭 파이썬에한정된 팁만 있는 것이 아니므로 다른 언어가 주력 언어더라도 해당 도서를 한 번쯤 읽어보면 좋을 것이라 생각된다.)

 

【책의 구성】 '진지한 파이썬'의책의 구성은 어떠한가.

 

 이 책은 따로 구성을파트별로 요약하기 어려울 것 같다. 그만큼 각 챕터가 독립적인 내용을 다루고 있으며, 하나하나 챕터가 모두 중요하기 때문이다. 따라서 필자가 가장 중요하게생각했던 챕터 몇 개만을 추려보았다

 



chapter 03 : 문서화와 모범 API 사례

 

 흔히 개발자들이 하는중대한 실수 중 하나가 이것이다. 개발만 잘하면 돼.. 맞는말이다. '개발자'라는 직함만 봐도 개발을 잘하는 것은 개발자의책무이자 중요한 의무이기 때문이다. 하지만 개발만 잘해선 안된다. 개발한작품을 잘 문서화해서 누구든 쉽게 사용할 수 있게 해야 한다는 것이다.

 

나아가 문서화만 잘해선 안된다. 개발 로직 역시 간결하고 일관되며기능 단위로 잘 조율되고 통합되어야 한다. 하나의 기능을 수행하는API가 난잡하게 내부에서 다양한 또 다른 API 들에 의존성이 물려있다면 해당 API는 언제든 변경될 수 있다는 불완전성을 갖는 것과 같다.

 

따라서 API 하나하나를 설계할 때에도 신중함이 필요하며, 어느 부분을 사용자에게 전달할 것인지 어떻게 전달할 것인지, 어떤용도로 전달할 것인지 잘 설계하고 문서화하는 것 역시 '개발자'로써당연히 갖춰야 할 덕목이다.

 



chapter 06 : 단위 테스트

 

 여러분이 신이 아니라면, 여러분의 코드는 항상 누군가에 의해서 감독되고 평가되어야 한다. 필자역시 그러하다. 필자가 20대일 때 필자의 머릿속엔 이런생각이 가득했다. 내 코드는 무결하고 절대 버그를 일으키지 않는다. 그렇다. 필자가 20대에 짠 코드들을 보면 나름 정성 가득하고 무결해 보이며절대 버그가 없을 것처럼 보였다. 하지만 그뿐이었다. 다른누군가가 필자 모르게 코드 2줄만을 바꾼다면 모든 시스템이 녹다운되는 현상을 관찰할 수 있는 훌륭한도미노 코드이다. (왜냐하면 하나가 쓰러지란 연쇄적으로 다 무너지는 구조이므로?)

 

더욱이 요즘처럼 공개 소프트웨어가 대세인 시대에 내가 짠 코드가 누군가에 의해 수정되는 사례는 적지 않게 볼수 있다. 물론 머지 과정에서 검증이 들어가겠지만 코드가 10만줄 100만 줄 된다면 언제 일일이 다 검증하고 있겠는가? (뭐시간이 엄청 많다면 가능할 수 있겠지만..)

그렇기에 작은 부분일지라도 단위 테스트로 구성하고 빌드나 배포 시에 항상 테스트를 자동으로 수행하게 하는 것은몹시 중요하다.

 

코드의 안정성은 곧 개발자의 신용과도 같은 것이다. 성능은 좋으나업데이트할 때마다 수많은 버그가 발생하는 API를 서비스에 사용하겠는가? 아니면 성능은 좀 떨어지나 업데이트할 때마다 안정성이 높아지는 API를서비스에 사용하겠는가? 답은 독자 여러분이 생각해 보시길 권한다.

 



chapter 10 : 성능과 최적화

 

 이 부분 역시 많은개발자들, 특히 근래 스크립트 개발자들에게 많은 부분 부족한 부분이다.최적화, 예전 필자가 23년 전에 코딩하던 시절에는컴퓨터 램이 32MB 면 어마어마하게 좋은 컴퓨터였다. 좋다못해 전설적인 컴퓨터였다. (물론 개인 기준이지만) 이 시절엔코드 한 줄을 짜더라도 메모리를 어떻게 하면 효율적으로 최적화할지, 어떻게 해야 사용량을 줄일 수 있을지철저히 계산하고 다이어트 시키고 효율을 높여야 했다. 적어도 요즘 컴퓨터들에 비해 1000배 이상 램과 CPU Clock에서 성능이 떨어졌다고 해도과언이 아닐 것이다.

 

하지만 지금은 시대가 너무나 좋아져서 메모리는 넘쳐나고 CPU Clock 역시어마어마하게 늘어난 상태이다. 그렇기에 대부분 최적화 없이 돌아가는 데에 집중하는 경향이 크다.

 

돌아가는 것도 중요하지만, O(N)에 처리될 코드가 O(N^2)에 처리되고 참조 지역성을 만족할 수 있는 코드임에도 cachehit rating을 내다 버린 수많은 코드들이 여기저기서 쉽게 찾아볼 수 있다.

 

최대한 양보해서 메모리 최적화까지는 바라지 않는다.(메모리 누수랑은다른 문제이다. 누수는 반드시 잡아야 한다.) 하지만 적어도 cache hit rating 그리고 참조 지역성, 시간 복잡도만큼은최적화하는 습관을 들이도록 하자.

 

물론 책에서는 함수에서 제공하는 메서드를 사용하는 방법, 그리고 프로파일러를사용하는 방법, 병목지점을 찾아서 훌륭하게 디텍션 및 처리하는 방법들을 정리하고 있으나, 한 가지 더 필자가 강조하고 싶은 부분이 있다. 파이썬에서 제공하는메서드를 사용하는 것은 훌륭한 방법이다. 이미 바퀴가 있는데 또 바퀴를 만들 필요는 없기 때문이다. 하지만 그 바퀴가 얼마나 효율적인지 어떤 용도로 만들어졌는지는 이해하고 사용하는 습관을 들이도록 하자.

 

【진지한 파이썬을 읽고…….】

 항상 느끼는 게 출판되는책들에서 요즘 IT의 흐름과 대세가 보인다는 것이다. 안드로이드가처음 나왔을 당시에는 적어도 4년 정도는 안드로이드 관련 도서가 엄청나게 나왔던 걸로 기억하고 있다. iOS 역시 그러하다. 그렇게2008년부터 지금까지 PC -> web-> Android / iOS -> web/ AI / 핀테크(블록체인)의 형태로 개발의대세가 흘러온 것 같다. 물론 대세가 그러하다는 것이지 해당 도서들이 출간이 안된 연도는 단 한 번도없었다.

 

필자가 생각하기에 이러한 오픈소스 기반의 REST API의 시대도어느 정도 고착화되고 대중화된다면 그 이후에는 증강 현실 / 가상 현실 쪽으로 포커싱이 옮겨가지 않을까싶다. 흐름을 보아도 그러하다. 개인 단말 -> 세계 인프라의 통합 -> AI -> IT와 생활의융햡 -> ? 다음은 무엇일지 대략 짐작 가능하지 않은가? 아마도증강 현실 / 가상 현실이지 않을까?

 

아마도 그 시대가 도래할 때쯤에 우리가 알고 있던 지식들은 한때 시대를 풍미했던 레거시 기술이 되고 더 추상화되고간략화된 기술들이 도래하지 않을까 싶다.

 

파이썬은 타 언어에 비해 배우기 쉽고 심플하며 광범위한 라이브러리를 사용할 수 있는 프로그래밍 언어이다.

머신러닝/딥러닝, 데이터 분석 등에서도 많이 사용되고 있다.

나는 업무상 백엔드 프로그래밍에서 파이썬을 주로 사용하고 있고, 조금 더 깊게 파이썬을 알고 싶은 니즈가 있었다.

시중에 파이썬 관련 책은 정말정말 많지만 대부분 입문용, 데이터 분석, 머신러닝/딥러닝 관련 책이고

중급, 고급을 위한 책은 많지 않았다.

'진지한 파이썬'은 기본 문법을 숙지하고 기본적인 프로그래밍이 가능한 프로그래머가 중급/고급자가 되기 위해

알아야 할 내용과 예제를 담고 있다.

진지한 파이썬

 

파이썬 소스 코드를 효율적으로 작성하는 방법을 더 잘 이해할 수 있도록 파이썬 내부도 살펴돈다.

내부에서 어떻게 소스 코드가 처리되는지 이해하면, 개발할 때 생기는 문제나 비효율적인 상황을 잘 해결할 수 있다.

 

책의 구성은 처음부터 끝까지 읽도록 집필되지 않았고, 관심있거나 필요한 부분을 바로 읽어도 되게 구성되어 있다.

목차는 다음과 같다.

1. 프로젝트 시작하기

2. 모듈, 라이브러리, 프레임워크

3. 문서화와 모범 API 사례

4. 시간 정보와 시간대 다루기

5. 개발한 소프트웨어 배포하기

6. 단위 테스트

7. 메서드와 데커레이터

8. 함수형 프로그래밍

9. AST, Hy, 리스프 계열 속성

10. 성능과 최적화

11. 확장과 구조

12. 관계형 데이터베이스 관리

13. 효율적으로 코딩하기

 

파이썬으로 프로그래밍 할 때 시간대 문제로 많은 혼란이 있었다.

시간대는 복잡하고 헷깔린다.

UTC시간을 기준으로 앞뒤로 시간을 더하거나 빼면 간단한 문제 같지만 현실실은 그렇지 않았다.

 이 책의 챕터 중 하나에 시간 정보와 시간대 다루기가 있다.

내가 시간대 문제를 해결하는 과정에서 이 책을 만났다면 조금 더 쉽고 빠르게 해결했었을 것 같다.

 

그 외에도 실무적으로 필요한 내용들을 알차게 담고 있어서 내가 필요할 때 찾아서 공부하거나

사전에 공부하고 숙지해놓는다면 실무에서 접하는 문제들을 해결하는데 많은 도움이 될 것이다.

 

파이썬 기초문법을 공부한 상태이고, 조금 더 파이썬에 대해 알고 싶고

'파이써닉'하게 프로그래밍하고 싶은 니즈가 있는 분께 추천하고 싶다.

 

[들어가며]

 

파이썬을 개발하면서 

실제로 부딪히는 문제들에 대해

훌륭한 해결책을 제시하는 책이다. 

 

시간대, 문서화, DB, 성능, 아키텍처 등

다양한 주제에 대해 

실제로 프로젝트를 진행하기 위해서 

고려해야하는 사항과 해결책을 알려준다.

 

단순히 파이썬 내부 구조나 

표준 Built-in 라이브러리에 대한 해설이 아니라,

각 상황별 문제를 해결할 수 있는 

추가 패키지를 적절히 제시해주는데, 

문제를 바로 해결할 수 있다는 측면에서 

무척 편리하고 아름다운 해결책이 많다. 

 

[저자]

 

저자인 쥘리앵 당주는 

파이썬 쪽에서 가장 큰 프로젝트인 

'오픈스택'의 프로젝트 팀 리더로

파이썬 계에서는 매우 잘 알려진 인물이다.

 

(오픈스택은 250만줄이 넘는 코드가 

파이썬으로 작성된 대형 프로젝트로 

파이썬의 모든 가능성과 기능을 점검하기 

무리가 없는 프로젝트이다.)

 

[역자]

 

역자는 김영하 님으로, 

이미 이분이 번역하신 도서를 

다수 읽었었고, 큰 도움을 받았기 때문에 

의심없이 공부할 수 있었다. 

 

[결론]

 

훌륭한 저자, 역자, 내용의 

삼박자가 갖추어진 책으로

파이썬 중급/고급을 꿈꾸는 개발자라면

큰 도움을 받을만한 책이다. 

 

실제로 책 본문에는 

어떤 내용이 등장하는지 소개하기 위해

개인적으로 공부하면서 정리했던 자료 중 

일부를 첨부한다. 

 

[CHAPTER 1 프로젝트 시작하기]

 

* 파이썬3를 사용

* 프로젝트 구조를 단순하게 설계

* README.rst/txt로 프로젝트 정보를 제공

* 패키지 문서를 reStructuredText 형식으로 작성해서 저장

* PEP 440 의 패키지 버전관리 구조를 준수

* pycodestyle 을 사용해서 PEP 8 의 코딩 스타일을 준수

* flake8 을 사용해서 코딩 오류를 검사

 

[CHAPTER 2 모듈, 라이브러리, 프레임워크]

 

* import 는 내부적으로 __import__ 를 호출

* sys.modules 는 OS의 변수/함수 액세스 제공

* sys.path 로 모듈 경로 위치 검색

* PEP 302 의 사용자 정의 지정 불러오기 사용

* sys.meta_path 또는 sys.path_hooks 를 통해 경로 항목 파인더 사용

* 메타 경로 파인더는 .py 외 .Hy 등 다른 사용자 지정 객체 로딩 가능

* 유용한 표준 라이브러리 목록

* 외부 라이브러리를 사용할 때 먼저 확인할 체크리스트

* pip 를 통한 패키지 설치와 관리

* 프레임워크 사용 및 선택 시 고려사항

    - 프레임워크의 기능이 적을수록 문제가 덜 발생

    - 프레임워크의 기능이 적을수록 기능이 부족해서 불편함

 

[CHAPTER 3 문서화와 모범 API 사례]

 

* 스핑크스를 사용해서 프로젝트를 문서화를 자동화

* API를 변경할 때 관리하고 문서화하는 방법

* 소스코드와 문서의 분리가 심할 수록 문서를 적절하게 유지 관리하기가 어려워짐

* 파이썬 문서의 일반 형식은 reStructuredText(reST, 마크다운과 비슷)

* sphinx.net.autodoc 을 통해 모듈에서 .rst 를 자동 생성

* sphinx.ext.autosummary 로 목차 제작 자동화

* 파이썬 doctext 모듈로 문서 생성 시 자동으로 문서명세 vs 소스구현 점검

* 공개 API 와 다르게 내부 API 는 언더바(_)로 시작

* API 버전 관리

    - 메이저 버전 = 이전과 큰 변화로 호환 불가 = 1, 2,  ...

    - 마이너 버전 = 일부 기능 추가 = 1.1, 1.2, ...

    - 메인터넌스 버전 = 버그 수정 = 1.1.1, 1.1.2, ...

* API 변경 사항에 대해 문서화

    - 추가 요소

    - 제거 요소

    - 신규 API로 변경하는 절차

* warnings 모듈로 사용자가 권장하지 않는 함수를 호출할 때 경고를 출력

 

[CHAPTER 4 시간 정보와 시간대 다루기]

 

* 시간대는 UTC +- 12 가 전부가 아니라, 15분 단위도 존재

    - 15분 단위의 시간대, 1년에 시간대 2번 변경, 서머타임등의 변수도 고려

    - 시간대가 없는 timestamp 는 무쓸모

* 시간대는 항상 UTC로 변환해서 저장

* datetime.datetime.utcnow() 로 UTC 현재 일시 획득 가능

* dateutil로 시간대 정보가 있는 시간 정보 생성

    - pip install python-dateutil

    - from dateutil import tz

    - tz.gettz("Asia/Seoul")

    - tz.gettz("GMT+8")

* datetime.datetime.isoformat() 으로 시간대 정보가 있는 datetime 객체 직렬화

    - pip install iso8601

    - ISO 8601 방식으로 시간 정보 반환

* dateutil 의 is_ambiguous() 사용해서 애매한 시간 정보 확인 가능

    - 예) 서머타임이 2시 -> 3시 해제될 때

    -     2:30 데이터가 해제 전 2:30 인지 아니면 해제 후 2:30 인지 확인 가능

* datetime 객체의 fold 속성으로 소속 시간정보 확인 가능

    - PEP 495 를 적용한 Python 3.6 부터 수행

 

[CHAPTER 5 개발한 소프트웨어 배포하기]

 

(생략)

 

[CHAPTER 6 단위 테스트]

 

(생략)

 

[CHAPTER 7 메서드와 데커레이터]

 

(생략)

 

[CHAPTER 8 함수형 프로그래밍]

 

(생략)

 

[CHAPTER 9 AST, Hy, 리스프 계열 속성]

 

(생략)

 

[CHAPTER 10 성능과 최적화]

 

(생략)

 

[CHAPTER 11 확장과 구조]

 

(생략)

 

[CHAPTER 12 관계형 데이터베이스 관리]

 

(생략)

 

[CHAPTER 13 효율적으로 코딩하기]

 

(생략)

 

 

출판사에서 책을 보내주셔서,

읽어본 느낌을 솔직하게 작성한 리뷰입니다.

도서 1부 외 다른 의뢰/대가/보상이 

없었음을 명시합니다.

별점 4개 이유: 나한테 어려워서

내가 이 책을 리뷰한다고 했을때, 막막했다.
왜냐하면 나는 자바 개발자이며, 이제 막 회사에 입사한 사회 초년생이기 때문이다.

나는 이 책이 단순한 파이썬 책인줄만 알았다.
근데 아니였다. 이 책은 기본서가 아니다.
그래서 파이썬으로 뭔가를 코딩해볼려고 하는 사람들에게는 추천하고 싶지 않다.
왜냐하면 이 책은 단순히 코딩이라는 단어로 포장할 수 있는 그런 책이 아니다.
그것보다 훨씬 심오하고 어렵다.

그렇다면 이 책은 어떤 사람들이 읽어야 할까?
책 제목에서 알 수 있다싶이 진지하게 파이썬을 학습할 생각이 있는 사람들에게 추천한다.
그러니까 가볍게 파이썬을 학습할 생각을 가진 사람은 이 책을 읽지 않는것이 정신 건강에 좋을거라 생각한다.

파이썬은 인기 프로그래밍 언어중 하나이다.
사실 파이썬이 각광받기 시작한건 고전? 프로그래밍 언어 중에서는 비교적 최근이다.
(파이썬: 1991년 자바: 1995년 물론 개발 과정까지 포함하면 자바가 더 오래될 수도 있는데 그건 나는 모르겠다. 자세한건 귀도 반 로섬과 제임스 고슬링에게 직접 문의 주시길...)

하지만 지금은 파이썬은 인기 순위에서 항상 5위에는 랭크된다.
파이썬이 코딩하기 쉬워서? 물론 이것도 이유겠지만, 단순히 코딩이 쉽다고 인기 순위가 높아지지는 않는다.

어째서 파이썬은 순위가 높은 것일까? 이 책을 읽으면 도움이 될지도 모른다.

파이썬은 2.x와 3.x를 지원하고 있다 이들의 차이점을 알고 있나?
물론 3.x가 더 최근에 나온건 누가 봐도 아는 사실이다. 이 책을 읽으면 이들의 차이점이 무엇인지 알 수 있다.

다시 돌아와서 이 책은 파이썬을 진지하게 사용하고 있거나, 진지하게 사용하고 싶은 사람들에게 권장한다.
만약, 당신이 파이썬을 진지하게 생각한다면 이 책을 읽는 순간 더 사랑에 빠질거라 예상한다.

마지막으로 작동원리부터 최적화까지 비교적 짧은 분량으로 설명하다니 ㄷ ㄷ;
나는 개인적으로 책이 짧기 때문에 상대적으로 어렵게만 느껴졌다. 그러니 이 책을 살때는 내가 파이썬을 얼마나 사랑한지 부터 생각해보고 구입하도록 하자.


  • 젓가락질 잘해야만 밥을 먹나요라는 노래 가사가 있었다.

     

    • 내 기억으로, 중고등학교때까지 젓가락질을 제대로 못했다.
    • 손가락 길이방향으로 젓가락을 걸치고 손끝을 사용하는 젓가락질이 정석이라면,
    • 그때까지 난 손가락 둘째마디에 젓가락을 끼우고 손가락 전체 근육을 사용해 반찬을 집었다.
    • 어르신들께서 간혹 지적하셨지만 나는 속으로 밥 잘 먹어요 하며 무시했고
    • 계기는 기억나지 않지만 나중에 커서도 지적받으면 안되겠다는 생각이 들어 다시 연습했다.
    • 지금은 젓가락질도 잘 하고 밥도 잘 먹는다.

     

  • 파이썬을 2008년에 구글링하며 혼자 배웠다.

     

    • C에서 matlab을 거쳐 접한 파이썬은 짧고 직관적인 명령어가 매력적이었다.
    • matplotlib으로 그래프를 .jpg, .png 형식으로 쉽게 찍어낼 수 있다는 것도,
    • os.system()으로 외부 프로그램을 자유롭게 실행할 수 있다는 것도 매력적이었다.
    • 내가 만들어 사용하던 프로그램들을 파이썬으로 바꿨고, 행복해졌다.
    • 10년 가까이 그렇게 썼다. 발전이 없었다.

     

  • 知之爲知之 不知爲不知 是知也

     

    • "아는 것을 안다고 하고 모르는 것을 모른다고 하는 것, 그것이 바로 앎이다"
    • 논어에 나오는 말씀이다.
    • 문제는 내가 뭘 모르는지조차 모를 때가 대부분이라는 것.
    • 뭘 모르는지조차 모르기에 개선의 필요도 느끼지 못하고 당연히 한치도 나아지지 않는다.
    • 2019년 파이콘 튜토리얼 목록을 보고 존재하는지조차 몰랐던 기능들을 볼 때까지 그랬다.
    • asyncio? decorator? TDD? 급하게 구글링을 해보고 나서야 내가 뭘 모르는지 조금이나마 알게 됐다.

     

  • 진지한 파이썬.

     

    • 이 책은 첫 챕터, 프로젝트 시작하기부터 진지하게 묻는다. "import는 할 줄 아세요?"
    • 구체적으로 말하면, "한 라인에 하나만 쓰고, import 한번에 하나만 가져오셔야 하는거 아세요?"
    • 그 다음 질문은, "문서 맨 위에 쓰되 주석과 docstring 다음에 쓰는거 아세요? 순서는 어떻게 놓는지 아세요?"
    • import는 파이썬을 몇 번만 사용해도 무조건 쓰는 명령.
    • 여기서 이렇게 답하기 어려운 질문을 받으면 그 뒤는 말할 것도 없다.
    • "시계는 볼 줄 아세요? 유럽 섬머타임에서 시간 바뀌는건요? 나라끼리 시차 문제는요?" - datetime
    • "데커레이터 쓰세요? 하나 쓸 때랑 여러개 쓸 때 어떻게 해야 하죠? 클래스에는요?" - decorator
    • 이 느낌을 알고 있다. 초년차 대학원생 시절 랩미팅때 교수님 앞에 서 있는 심정이다.
    • "죄송합니다. 더 알아보고 다시 답변드리겠습니다"

     

  • 다시 젓가락질

     

    • 젓가락질을 잘 못해도 밥을 잘 먹을 수는 있다.
    • 그러나 상견례나 식사면접처럼 밥 먹는 모습을 보이는 자체가 중요한 자리가 가끔 있다.
    • 코딩도 마찬가지. 고수의 코드에서 풍기는 아우라가 내 코드에 없을 수도 있다.
    • 그러나 내 코드의 생김새 자체가 부분적으로라도 평가를 받을 일이 반드시 생긴다.
    • 게다가 코드의 생김새는 생김새로 끝나지 않는다. 성능에 영향을 미친다.
    • "이거 돌리려면 보름은 필요한데" - 이러면 학회 발표가 물건너갈 수 있다.

     

  • 아는 만큼 보이는 책, 모르면 해봐야 하는 책.

     

    • 챕터마다 파이썬의 다른 면모를 다룬다.
    • 내 경우 8장. 함수형 프로그래밍은 제법 익숙한 부분. 끄덕끄덕하면 페이지만 넘겨도 거의 된다.
    • 반면 5장. 개발한 소프트웨어 배포하기는 경험을 하지 못한 부분, 그러나 곧 해야 하는 부분이다.
    • 챕터마다 이해도가 천차만별이다.
    • 비교적 친절하다고 느껴지는 예제코드를 담고 있기 때문에 모르는 부분도 따라하면 되겠지 싶지만, 경험으로 알고 있다. 안 따라하면 죽어도 모를 것이다.

     

  • 파이썬 초심자가 멋모르고 이 책을 집지 않기 바란다.

     

    • 내가 모르는 지점을 알게 되는 경험은 이성적으로는 통쾌해도 감정적으론 조금 쓴 맛이 난다.
    • 예제코드는 친절하지만 설명은 휙휙 넘어가는 경향이 없지 않다.
    • 자신감이 부족한 초심자 입장에서 이 책을 집으면 절망만이 가득해질 수도 있다.

     

  • 파이썬에 조금 자신이 붙었다고 느끼는 사람이 보면 좋겠다.

     

    • 더닝크루거 곡선의 초기 부분 말고, 자신감의 바닥까지 갔다가 영차영차 올라오는 분들께 도움이 될 것 같다.
    • 이 분들에게는 한 장 한 장이 좋은 사다리가 될 수 있을 것 같다.
    • 내 경우 4장. 문서화5장. 소프트웨어 배포7장. 데커레이터는 즉시 투입 전력이 된다.
    • 일단 돌아가게는 만들 수 있기 때문에, 더 효율적으로 만들고 더 많은 분들께 검증을 받아야 하기 때문이다.

     

 

 

※ 한빛미디어 2021 도서 서평단 "나는 리뷰어다"의 일원으로 도서를 제공받아 작성한 리뷰입니다.

‘진지한 파이썬’은 파이썬 고수로 가기위한 도전이라 생각합니다. ‘진지한'이라는 말에서도 느낄 수 있듯 이 책은 쉽지 않습니다. 파이썬으로 프로그래밍을 한 경험이 있어야 읽을 수 있는 책인데 막 파이썬에 입문한 사람이라면 좀 어려울지도 모르겠습니다. C++, 자바 개발자에게 ‘Effective’, ‘Advanced’ 시리즈가 있듯 파이썬 개발자에게는 ‘진지한 파이썬’이 있습니다.

 

이 책은 총 13개의 장으로 되어있는데 각 장마다 내용이 독립적이라 필요한 부분만 골라 읽을 수 있는 구조입니다. 그래도 1장부터 3장까지는 모든 파이썬 개발자에게 유용한 내용이라 순서대로 읽는 것도 괜찮을 것 같습니다. 

 

저자의 노하우가 뭍어나는 전체적인 내용도 좋았지만 중간 중간에 나오는 파이썬 전문가 인터뷰 내용이 참 흥미로웠습니다. 각 파트별 디테일한 설명을 들을 수 있었고 규모가 큰 파이썬 프로젝트를 진행하다보면 격게되는 다양한 고충을 미리 답습할 수 있었습니다.

 

파이썬을 사용한지 10년도 넘었는데 주력 언어가 아니라 그런지 책속에 모르는 내용이 참 많았습니다. 파이썬이 배우기 쉬운 언어로 대중에 알려졌지만 이 책을 보니 고수가 되는 길은 역시 쉽지 않네요. ‘진지한 파이썬' 파이썬 고수라면 넘어야할 산이라 생각합니다. 저도 필요한 내용을 진지하게 다시 한번 읽어볼 생각입니다. 

파이썬 중급자에게 적합한 <진지한 파이썬>

 

책은 시간이 지나도 소장가치가 있거나, 지금 당장 참고용으로 충분히 활용할 가치가 있어야 한다고 생각한다.


그런 면에서 이 책은 파이썬 개발자를 꿈꾸는 학생들이 읽을 만한 부분이 많다. 그렇다고 파이썬 입문자가 보기에 좋은 책은 아니다. 좋은 입문 책을 여러 번 읽고 코드를 짜 본 후 개발하고 배포하기까지의 과정에서 고민하게 되는 그 무언가에 대한 힌트와 보충 설명이 될 수 있다고 생각한다.

충분한 예시와 좀 더 쉬운 설명이 곁들여지면 독자들이 더 수월할지도 모르겠지만, 어디까지나 독자의 파이썬에 대한 배경지식과 다른 언어로 개발이나 학습을 해본 경험 여하에 따라 다른 것이라서 쉽게 말할 수는 없다.

 

약 300 페이지 분량의 책에서 필요한 부분을 찾아 읽어가면 되고, 나는 틈틈이 처음부터 밑줄을 치면서 읽어나갔다. 읽다가 막히면 구글링도 하면서 코드도 만들어 보았고, 간혹 구글 코랩에서 작성하면 시간대(UTC) 등 책과 다른 부분도 보일 것이다. 주피터노트북과 코랩을 왔다갔다하면서 보았고 큰 문제가 안되는 것이라, 그냥 이해하고 넘어갔다.

 

어려운 부분도 있지만, 여러 차례 반복 공부하고 관련 자료를 인터넷에서 찾아가면서 자신만의 레퍼런스 북을 만들면 좋겠다.


처음 책을 집어들어 두께와 목차를 보고 조금 놀랬다. 이 정도의 내용을 다루기에는 너무 얇았기 때문이다. 하지만 실제 책을 읽어 보니 이런 식의 접근도 꽤나 좋다는 느낌이었다. 개발 언어에 대한 입문서를 보거나 어느 정도 개발이 익숙한 개발자를 대상으로 하기에, 불필요한 기본 설명 없이 필요한 기능들을 간략하게 소개하며 딱 흥미가 느껴질 정도까지만 설명한다. 요즘은 주제를 알면 쉽게 찾아볼 수 있는 곳이 많기 때문에 어떤 부분이 지금 나에게 필요한 지를 아는 것이 중요한데 이 책이 그 역할을 아주 잘 해 줄 수 있다.

 

다양한 언어에 오랜 경험이 있는 개발자라면, 이미 알고 있는 주제이지만 파이썬에서 접근하는 방법을 알고 싶을 때 두꺼운 서적을 보기 보다는 간략하게 잘 정리된 문서를 본다는 생각으로 접한다면 좋은 기회가 될 것이다. 물론 파이썬이 조금 익숙해 졌다고 생각하는 주니어 개발자들에게는 너무나 좋은 기능들에 대한 설명이 될 것이다. 오히려 너무 많은 기능들의 나열이 조금 버거울 수도 있지만, 알아두면 언젠가 꼭 활용할 수 있기에 주제만이라도 기억하면 좋을 것이다.

 

본격적으로 파이썬을 사용하려 한다면 한번 읽어보면 좋은 책이다.

감사하게도 한빛미디어에서 책을 주셨다.

이번에 선택한 책은 지지한 파이썬

소제목은 파이썬 작동 원리에서 확장, 테스트, 배포, 최적화 까지

흔이 볼 수 있는 파이썬 입문서는 아니다.

이 책은 본격적으로 "공유될 만한" 파이썬 프로젝트를

구축하는자의 입장에서 볼만한 책이라 생각한다.

- 프로젝트 구조잡는 것에 대한 이야기

- 프로젝트 시작전 체크해야할 사항들 (버전선택, 자동 오류검출 환경 만들기 등)

- 개발자에게 맞는 최선의 프레임워크 선택하는 방법

- 프로젝트 문서화와 API 관리

- 배포 지침

- 단위 테스트

- 적절한 자료구조, 효율적인 함수정의, 병목현상 분석등 성능 최적화 지침

- 멀티프로세싱, 멀티스레드

- 관계형 디비

여러 프로젝트 구축에 관한 내용들이 담겨 있다.

그래서 진지한 파이썬이 아닐까?

그동안 나는 전세계 능력자들이 만들어논 프로젝트에

코드만 살짝 수정해서 사용해온게 전부 였다.

언젠가는 나에게 도움을 주었던 많은 능력자분들에게 감사하는 의미로

도움이 될만한 프로젝트를 공유하고 싶다.

개발자라면 모두 가지고 있는 생각이 아닐까 한다.

그렇다면 다음에 진지하게 공부해 보는 걸로 ㅎㅎ

(처음부터 끝까지 한번 훑어보았다ㅎㅎ)

이 책은 한빛 미디어로부터 제공되었습니다.

 

 

 

 

 

KakaoTalk_20210219_130203080.jpg

진지한 파이썬 리뷰

 

[본 리뷰는 한빛미디어 나는 리뷰어다 2021을 통해 서적을 제공받아 작성하였습니다]

수년 전부터 머신러닝과 딥러닝이 발전하면서 파이썬의 사용자는 빠르게 늘어났습니다. 이러한 수요에 발 맞추어 많은 책이 발간되었습니다. 이제는 서점에 가도 파이썬 관련 서적이 서가 세로 한 줄을 가득 채우고도 남는 정도가 되었습니다. 하지만 대부분이 새로 시작하는 사용자에 초점을 맞춘 책이 많다보니 중급자를 위한 선택지는 그리 많지 않았습니다.

물론 이전부터 Effective Python 2nd. (길벗, 2020), Fluent Python(한빛미디어) 등 좋은 중-고급 서적이 있었습니다. 하지만 하나의 책이 모든 내용을 다룰 수는 없었지요. 최근에는 중-고급 사용자를 위한 좋은 책이 꽤 발간되고 있는데요. 진지한 파이썬 역시 기본 서적을 다 마치고 다음 단계로 나아가고자 하는 사람들에게 좋은 선택지가 될 것으로 생각합니다.

코드 외의 곳에도 파이써닉(Pythonic)을 적용해보자

파이썬의 언어 철학은 독특합니다. 이런 철학은 피터스의 The Zen of Python에도 잘 드러나 있습니다. 그래서 파이썬 사용자들은 "어떻게 하면 더 파이써닉한 코드를 작성할 수 있을지", "두 코드 중에 어떤 방법이 더 파이써닉 한지"를 두고 많은 고민을 합니다. 이 책은 같은 고민을 가진 개발자를 위한 좋은 가이드가 될 수 있을 것입니다.

본 책에서는 단순 코드를 깔끔하게 작성하여 기능을 구현하는 것뿐만 아니라 프로젝트 문서를 작성하고, 자동화하는 방법을 배울 수 있습니다. 유닛 테스트를 만들고, 테스트를 자동화 할 수 있는 방법도 배울 수 있고요.

챕터 말미에 있는 파이썬 구루들의 인터뷰도 인상깊습니다. 같은 기능을 구현하는 여러 방법이 있지만, 파이썬 개발자라면 그 중에서도 더 파이써닉한 방법을 쓰고 싶기 마련이지요. 인터뷰에서는 그런 고민에 대해 파이썬의 구루들이 경험과 조언을 나누어줍니다. 이는 미래에 겪을 상황에 대해 좋은 대비책이자 매뉴얼이 될 것입니다.

 

책이 두껍지는 않습니다만 다루는 내용이 적지 않고 깊이 또한 깊기 때문에 빠르게 이해하기는 어렵습니다. 저도 다 이해하지 못했고요. 하지만 천천히 한 걸음씩 밟아간다면 마지막 장을 덮었을 때 좀 더 파이써닉한 개발자가 되어있을 것입니다. 좋은 내용을 책으로 내어주신 저자분과 깔끔한 번역을 해주신 역자분께 감사의 말씀을 전합니다.

 

주로 머신러닝에 관한 책 위주로 다루던 것과 다르게 이번에 받은 책은 프로그래밍에 관한 책입니다.

특히 최근 핫한 프로그래밍 언어인 파이썬(Python)에 대해 깊게 다룬 책인데요.

머신러닝과 파이썬은 뗄레야 뗄 수 없는 관계이기 때문에 파이썬에 대해 아는 것 또한 굉장히 중요합니다.

 

결국 우리가 배운 이론을 실제 데이터에 적용하기 위해서는 파이썬이든 R이든 어떠한 Tool을 이용해야하며,이때 이 Tool을 능숙하게 잘 사용할수록 보다 다채로운 분석을 할 수 있겠죠.

R보다 범용성이 넓은 파이썬의 특성상 파이썬의 기능을 잘 알수록 더욱 잘 활용할 수 있다고 합니다.

 

저도 프로그래밍은 개인적으로 약하다고 생각해서요.

저같은 사람들에게 이 책은 "파이써닉"하게 프로그래밍하게 만들어주는 책입니다.


Q. 이 책은 어떤 책인가요?

파이썬(Python) 입문자를 넘어 중급, 고급으로 나아가고 싶은 개발자를 위한 실전 프로그래밍 지침서입니다.

대부분 공감하시겠지만, 전문 서적 중 입문서라고 칭하는 책들은 굉장히 많습니다.

특히나 입문자가 많아지는 요즈음, 그러한 입문서 또한 같이 늘어나는 추세이고요.

중급자를 위한 서적도 같이 늘어나면 좋겠지만, 실상 그렇지 않은 경우가 다반사입니다.

오히려 기하급수적으로 중급 이상의 책이 감소하고 있죠.

(어려운 책은 안 읽으려는 대부분의 사람들의 특성 같기도.. 하고요.... ㅎㅎ)

 

이러한 트렌드는 좀 더 공부하고 싶은 사람들에게 좋은 사인은 아닙니다.

좋은 책이 있다고 하더라도 거의 대부분이 원서 위주고, 번역서라고 하더라도 어색한 번역체가 가득하고요.

 

이때 진지한 파이썬은 파이썬으로 15년 넘게 개발해온 저자가 파이썬의 기능과 능력을 활용해 프로그램을 체계적으로 구축하는 방법을 소개합니다.

단순히 파이썬의 문법과 Loop, 자료구조 등을 배우는 입문서의 수준을 넘어 '파이써닉'하게 사용하는 방법을 알려주는 책입니다.

 

사실 저는 개발자를 꿈꾸는 게 아니기 때문에 프로그래밍 언어를 깊게 다룬다고 하면 '굳이?' 라는 생각은 있습니다.

프로그래밍 언어에 집중할 시간에 통계학 이론이나 수학 책을 살펴보는 게 낫다고 생각하거든요.

이론적 기반이 탄탄하면 이를 코드로 옮기는 건 무리가 아니라고 생각이 들어서요.

 

그러나 파이썬으로 얼마 전 데이터 분석 프로젝트를 하면서 자신감이 좀 꺾였습니다. ㅎㅎ

파이썬을 능숙하게 다루는 팀원을 보면서 많은 걸 배웠거든요.

많은 라이브러리를 유연하게 사용하고, 객체지향이라는 파이썬의 특성을 십분 활용하는 팀원을 통해 파이써닉하게 프로그래밍하는 방법을 익힌다면 AI를 공부할 때 훨씬 도움이 되겠다는 판단이 들어 이 책을 읽기로 하였습니다.

 

실제로 Scikit-learn, Tensorflow, PyTorch 등 머신러닝 라이브러리와 더불어 numpy, pandas, matplotlib 등 데이터 분석에 필수적으로 요구되는 핵심 라이브러리를 사용하기 위해서는 파이썬 사용을 피할래야 피할 수가 없습니다.

그렇기에 파이써닉하게 사용하는 방법을 알아야겠다고 생각이 들었고요.

 

간단하게 목차를 소개하면 다음과 같습니다.


 



Q. 그럼 누구에게 추천하는 책인가요?

파이썬을 주 언어로 사용하는 개발자들에게 추천하는 책입니다.

점프 투 파이썬 등 입문서로 꼽히는 대표 책들을 읽으신 후, 파이써닉하게 알아가고자 하는 분들을 위해 추천하는 책입니다.

 

개인적으로 앞으로 머신러닝, 딥러닝 등을 전문적으로 하실 분들에게도 추천하는 책입니다.

저도 그전까진 파이썬에 대해 깊게 알아갈 생각은 크게 안했는데요.

생각해보니 수많은 파이썬 라이브러리를 잘 다루기 위해서라도 파이써닉하게 다루는 방법을 배울 필요가 있겠더라고요.

물론 R을 위주로 사용하는 분들도 많긴 하겠지만, 요즘 파이썬을 이용해 데이터 분석을 하는 분들도 많으니깐요.

입문서를 넘어서 파이썬 자체에 대해 심도있는 학습을 한다면 코드를 짜는 데 있어 훨씬 효율적이지 않을까 싶습니다.

 

 


Q. 이 책의 장점은 무엇인가요?

첫째는 몇 안 되는 중급 이상의 난이도있는 서적입니다.

입문서가 가득한 서적 속에서 전문적인 내용을 다룬다는 것은 정말 기쁜 일이죠.

라이브리러와 메소드, 데코레이터의 고급 활용법 등과 더불어 개발한 소프트웨어의 테스트부터 성능 최적화, 문서화와 API 관리, 배포 등 개발 프로세스에서 완성도있게 프로그램을 짜고 싶은 분들에게 최적일 것이라 생각합니다.

 

둘째는 어려운 서적임에도 불구하고 깔끔한 번역체입니다.

읽다 보면 번역이 되게 깔끔합니다.

번역서 중 너무 어색한 번역 탓에 오히려 집중이 안 되는 경우도 많은데 이 책은 그렇지 않습니다.

 

 

정리하자면 이 책은 파이썬의 전문적인 내용을 알아가고자 하는 파이썬 개발자들에게 추천하는 서적입니다.

또한 AI 엔지니어, 머신러닝 엔지니어들에게도 파이써닉한 AI를 만들 수 있도록 윤활유를 제공하는 책이라고 할 수 있겠네요.

 

감사합니다.



출처: https://datalabbit.tistory.com/96 [간토끼 DataMining Lab]


 

 

<이 게시물은 한빛미디어로부터 무상으로 제공받은 도서를 읽고 작성되었습니다.>

이번에 한빛미디어 도서 서평단에 참가하게 되어서 진지한 파이썬을 읽을 기회를 얻게 되었는데 나는 파이썬을 어느 정도 익히고 이 책을 읽었는데 일단 이 진지한 파이썬은 파이썬을 입문하는 사람에게 어울리는 책은 아니다. 이 책은 기본 문법보다는 파이썬을 더 효율적으로 사용하는 방법이 나와있는 책이기 때문에 파이썬을 어느 정도 이해하고 있는 사람이 봐야 이 책을 제대로 즐길 수 있을 것이다.

 이 진지한 파이썬은 처음부터 끝까지 읽을 필요가 없다. 목차를 읽어보고 자신이 필요한 부분이나 먼저 배우고 싶은 부분을 먼저 읽어도 전혀 상관이 없기 때문에 자신이 부족한 부분을 먼저 채워가며 공부할 수 있다. 이 책은 파이썬 모듈 ,라이브러리, 프로젝트, 데커레이터, 메서드, 최적화 등 파이썬의 고수가 되기 위한 프로그래밍 기술을 설명하고 있는데 위의 기술들을 하나도 모른다고 해도 파이썬에 대한 기본지식과 열심히 배우고자 하는 열정을 가지고 책을 본다면 위의 책을 다 읽을 때쯤 당신은 파이썬 고수가 되어있을 것이다.

 

이 책은 파이썬을 잘 사용하고 싶을 때 읽으면 좋다. 사람들은 파이썬을 사용할 때 다른 언어를 사용할 때 보다 이점을 얻는 경우가 드문데 이는 파이썬 만의 장점이 무엇인지 모르기 때문이다. 이를 알기 위한 방법으로 공부하는 것도 중요하지만 경험이 한몫을 한다. 이런 경험을 얻는 것은 쉽지 않은데 이 책에서는 각 장의 끝마다 파이썬 고수들의 인터뷰를 통해 경험을 간접적으로 제공해 주고 있다.

<총평>

자신이 파이썬의 기본 문법을 다 했을 때 읽는 것을 추천 무작정 순서대로 하기보다는 목차를 보고 관심 있는 부분 먼저 학습하는 게 이 책을 더 잘 즐길 수 있는 방법.

 

요즘 너도 나도 흔하게 배우는 코딩이 파이썬이다보니 냅다 print("Hello World !")로 시작하는 경우가 더러 있다고 들었다.

나같은 경우는 학교 수업을 통해 처음으로 접하게 되었고 통계 분석 위주로 파이썬을 처음 배우기 시작했다.

그러다보니 컴퓨터 언어나 소프트웨어에 대한 지식이 부족해서 파이썬의 작동 원리나 이게 왜 이렇게 되는지 이해하기가 난해하기도 했다.

사실은 처음 뿐만 아니라 지금도 가끔은 왜 이런 오류가 나는지 아무리 생각해도 이해가 안되는 순간들이 꽤 있다.

앞으로도 데이터 분석이라는 분야에 대해 연구하고 싶고 그 안에서 이름을 남기고 싶은 사람으로서

나름 가장 편하게 구사하는 언어인 파이썬을 밑바닥부터 이해해보자 라는 마음이 생겼다.

그러한 마음을 어쩌면 가장 잘 이해해줄 책이 바로 진지한 파이썬이라고 생각했다.

우선 책에 대한 첫 인상은 너무 귀여웠다.

난데없이 귀엽다..라는 말이 웃기게 들릴 수 있겠지만 격파하고 있는 비단뱀이 보이는 는데 이마저도 귀엽다.

(파이썬의 본래 뜻이 비단뱀이고 마크도 비단뱀을 의미하니까 비단뱀.. 이겠지?)

뭔가 노란 톤의 커버와 자신만만한 비단뱀의 모습이 너도 할 수 있어! 별 거 아니야! 라고 말해주는 것 같아서 귀여웠다.

그 다음으로 심금을 울렸던(?) 부분은 책의 구성에서 였다.

" 이 책은 반드시 처음부터 끝까지 순서대로 읽도록 집필하지 않았습니다. "

이 구절에서.. 진짜 찐한 행복을 느꼈다.

보통 내가 그동안 봐왔던 코딩, 데이터 분석 계열의 책들은.. 두께가 얇지도 않으면서 저~ 멀리까지 읽어야만.. 견뎌야만 내가 원하는 내용을 만날 수 있었다.

단계별로 코딩을 배우고 공부하는 것이 물론 좋지만 가끔은 원하는 부분만 뽑아보고 싶을 수도 있는데 그럴때마다 약간 힘들었다.

성격상 또 그 스텝을 밟아줘야 속이 시원했기 때문이다.

그리고 목차를 읽었을 때 독특하고 매력적인 구성이라고 생각했다.

매 챕터가 끝날 때마다 인터뷰가 수록되어 있었기 때문이다!

마치 잡지에서 내가 좋아하는 연예인의 인터뷰를 기대하며 읽는 것처럼 한 챕터가 끝날 때 어떠한 내용의 인터뷰일지 기대하며 읽게 되었다.

먼저 첫번째 챕터인 "프로젝트 시작하기" 부분에서 처음부터 조금 당황스러웠다.

프로젝트에 대해 설명하는 부분이 컴퓨터에 대한 지식이 전무한 사람이라면 진짜 읽다가 울겠다 싶었다.

엄청나게 난이도 있는 내용은 아니었지만 그렇다고 또 아무것도 모르는 사람이 봤을 때 이해할 정도는 아니었다.

하여튼 이리저리 찾아가면서 책을 읽어나가는 재미가 있었다.

아 내가 모르고 지나쳤던 뭔지모르겠다 하고 넘겼던 파일들이나 매커니즘이 이런거구나 하고 알게 되었다.

Chapter 1을 다 읽고나서는 바로 가~장 궁금하고 관심있는 Chapter 11로 넘어갔다.

작년에 했던 인턴으로 근무할 당시, 방대한 양의 데이터를 주기적으로 크롤링하는 업무가 있었다.

그 때 멀티프로세싱으로 처리하고 싶었지만 생각보다 신경써야하는 부분이 많아서 끝내 구현하지 못하고 수동으로 콘솔을 여러개 열고 직접 index를 나누어서 실행했던 기억이 아직도 생생하다.

이렇게 짜볼까하면 DB에 무리가 가고 이렇게 해볼까 하면 컴퓨터가 견디질 못해서 근무하는 5개월동안 살짝 아픈 손가락으로 남아있었다.

그래서 11번째 챕터인 "확장과 구조"에서 멀티프로세싱에 대한 내용을 먼저 찾아 읽었다.

결론적으로 당시에 내가 왜 구현해내지 못했는지, 어떤 부분을 어떻게 적용시켰어야 했는지에 대해 조금이나마 알게 되었다.

당시에 구글링을 통해 다양한 사람들의 멀티프로세싱 코드를 참조하여 코드를 작성했기 때문에 나의 상황에 맞는 코드라기 보단 단지 멀티프로세싱이라는 단어에만 적절한 코드였던 것 같다.

아무래도 조만간 그때 그 코드를 한 번 뜯어봐야겠다..!

여러모로 통계 분석에 집중된 코드를 짜다보니 오류가 나거나 다른 사람의 코드를 참고할 때 왜 이게 이렇게 적용 되는지 크게 생각하지 않았던 경우가 꽤 있었는데 < 진지한 파이썬 >을 읽는 내내 아.. 이게 그때 그거구나!!하는 유레카(Eureka!!!!)의 순간들이 가득했다.

진짜.. 거짓말 안하고 너무 재밌었다.

마치 자막없이 다른 나라의 영화나 드라마를 대충 눈치로 보다가 한글 자막 딱! 넣고 내 상상이 맞았었는지 확인해나가는, 진짜 내용을 파악해나가는 기분이었다.


본 포스터는 한빛미디어에서 [나는 리뷰어다]를 통해 책을 지원받아 작성한 리뷰 포스터입니다. 먼저 저는 대학원생이고 대학원에서 파이썬과 파이토치를 이용해서 딥러닝 연구를 하고 있음을 미리 밝힙니다. 책을 읽고 난 느낌부터 말하자면 파이썬을 이용해서 데이터 분석을 하는 학생, 입문자분들에게는 추천드리지 않습니다. 하지만 파이썬을 이용해서 개발을 하시는 분들은 3번쯤은 읽어보면 좋은 책으로 생각합니다.

1. 책소개

많은 분들이 아시겠지만 "진지한 파이썬"은 페이스북과 블로그들에서 몇번 언급되었던 책입니다. 저희 경우도 페이스북의 친구분과 구독하고 있는 블로그 분들의 글을 통해서 책을 처음 접했습니다. 많은 주변 개발자분들이 좋은 평을 해줘서 기대한 점도 있었지만 사실 이 책을 리뷰로 선택한 이유는 책의 소개 문구때문이었습니다.

 


시중에 나온 파이썬 책은 파이썬을 처음으로 공부하는 사람들을 대상으로 하는 입문서, 머신러닝 교재, 딥러닝 교재 3가지가 대부분입니다. 자바와 C를 사용하는 사람은 전부 개발자들이어서 개발을 위한 고급 책들이 많지만 파이썬을 하는 사람들은 개발보다는 분석, 딥러닝쪽이라 아무래도 어쩔 수 없는 상황이기는 합니다. 하지만 최근들어서 파이썬을 통해서 백엔드 개발과 다양한 개발을 하는 사람이 늘었고 이런 수요에 맞춘 책이다보니 더욱 관심이 갔습니다. (저도 요새 벡엔드쪽에 관심이 있어서 이러한 파이썬 개발책에 더욱 관심이 갔습니다)


진지한 파이썬이라는 제목 처럼 대상 독자는 파이썬 실력을 높이고 싶은 사람을 대상으로 쓰여진 글입니다. 실제 책의 목차를 보면 13개의 챕터로 구성되어있는데 현업에서 6개월 정도밖에 프로젝트를 해보지 못했지만 앞의 3개 챕터에 대해서 중요성은 확실히 느꼈습니다.

  • CHAPTER 1 프로젝트 시작하기
  • CHAPTER 2 모듈, 라이브러리, 프레임워크
  • CHAPTER 3 문서화와 모범 API 사례
  • CHAPTER 4 시간 정보와 시간대 다루기
  • CHAPTER 5 개발한 소프트웨어 배포하기
  • CHAPTER 6 단위 테스트
  • CHAPTER 7 메서드와 데커레이터
  • CHAPTER 8 함수형 프로그래밍
  • CHAPTER 9 AST, Hy, 리스프 계열 속성
  • CHAPTER 10 성능과 최적화
  • CHAPTER 11 확장과 구조
  • CHAPTER 12 관계형 데이터베이스 관리
  • CHAPTER 13 효율적으로 코딩하기

2. 책내용

책의 구성은 "챕터의 내용" + "인터뷰"으로 구성되어있습니다. 읽으면서 도움이 된 부분중 하나는 프로젝트의 설계 부분과 효율적으로 코딩하기이었습니다. 프로젝트를 회사에서 진행할때 사실 아무것도 모른채로 주먹구구식으로 진행했었습니다. 하지만 책의 내용 중에 프로젝트를 어떻게 해야 잘 설계할지에서부터 주의해야할 사항, 팀업시에 어떤 식으로 코딩스타일을 해야할지 등 좋은 내용들이 있었고 이런 점들을 보면서 어느정도 프로젝트 진행사항에 대해서 정리할 수 있었습니다.

 


그리고 six를 사용해서 파이썬 코드를 예쁘게 짜는 부분이 도움이 많이 되었습니다. 카카오 아레나 대회의 베이스라인 코드를 보면 카카오분들이 six 패키지를 이용해서 코드를 많이 작성해두었는데 처음에는 그 이유를 몰랐지만 책을 읽으면서 2와 3 모두 호환되게 코드를 작성하려고 했다는 이유를 알았습니다. (되게 단순한거였는데 귀찮아서 안찾아봤었네요 ㅎㅎ)


추가로 재밌는 점은 파이썬 개발자들의 인터뷰를 챕터의 마지막에 넣어둔 점입니다. 예를들어, 챕터1의 프로젝트 시작하기를 보면 파이썬 개발자 조슈아 할로가 파이썬에 대해서 한 인터뷰가 있습니다.

 


이런 인터뷰들을 보면서 소소하지만 여러가지 팁들과 개념들을 익힐 수도 있었습니다.

3. 책 소감

2월 22일이 리뷰작성의 마지막날이어서 아직 책을 다 읽지는 못했지만 굉장히 만족스럽게 읽고 있습니다. 실무에서는 사용하지만 학생이라 몰랐던 내용들이 많이 담겨져 있어서 마음에 들었고 개발자들이 기본적으로 알아야하는 내용들로 구성된게 좋았습니다. 그렇기에 파이썬 개발자를 생각하지 않는 사람들은 예를 들어 numpy, pandas 등으로 데이터 분석을 하거나 딥러닝 연구를 하는 사람들의 입장에서는 큰 도움이 안되었을 것으로 보입니다. 사실 파이썬 3년정도 사용했지만 몰라도 잘 사용했습니다. 그래도 파이썬으로 개발을 생각하는 사람들을 대상으로는 정말 좋은 책이라고 생각합니다. 여러번 정독해서 책에 나온 테크닉들을 나의 것으로 만들면 파이썬 입문을 넘어서 진정한 파이썬 개발자로 나아갈 수 있을 것 같습니다.

얼마전 한빛미디어에서 도서리뷰어 이벤트를 진행하기에 응모하였다.

그 후에 리뷰어로 선정되었음을 메일로 알려왔고 리뷰를 진행할 여러 책들 중에서 선택하는 과정을 거쳐서 위 책을 받게 되었다.

 

습관적으로 저자의 인사말과 목차부터 살펴보다가 깨닭은건 초급자를 위한 책은 아니란것이었다.

강의때문에 최근 초급자를 위한 파이썬 책을 몇권 보다보니 의례히 초급자용 책인가 싶었던것 같다.

 

목차에서 소개한 책의 내용이나 아무 생각없이 읽기 시작한 1장의 내용은 개인적으로 상당히 도움이 될것 같다는 생각을 하게 만들었다.

 

컴퓨터공학을 전공하고 2003년부터 지금까지 개발일을...물론 몇년 전부터는 관리업무가 더 많긴 하지만...

2014년부터 작년까진 대학에서 강의도 하면서...

 

그러면서 뭔가 구현에만 급급하고 타성에 빠져서 엉망으로 개발을 해온게 아닌가 하는 생각이 들었다.

 

1장의 제목이 '프로젝트 시작하기' 이다.

아주 기본적인것들에 대한 내용을 다루는데 여기서부터 반성을 시작하게 된것 같다.

알고는 있었지만 간과하고 대충대충하며 넘어갔던 것들.

물론 파이썬에 특화된 내용을 바탕으로 적혀 있기는 하지만 다른 언어역시 같은 내용들을 모두 가지고 있는 그런 기본에 대한 내용들이었다.

 

아직 책을 다 읽어보지는 못했다.

 

이후 다루는 내용들이 문서화와 모범 API사례, 배포, 단위테스트, 성능과 최적화...

계속해서 읽어 가면서 더 반성을 하게 되지 않을까 생각한다.

 

요약해보자면

파이썬 입문자 또는 초심자를 위한 책은 아님.

분명히 개발 경험이나 어느정도의 사전지식이 필요.

중급자 또는 중급으로 넘어가려는 단계에서는 꽤 도움이 될만한 책.

파이썬을 배웠고 파이썬으로 프로젝트를 해보적이 있다면, 파이썬으로 좀더 좋은 프로그램을 만들기 위해서 어떻게 해야 할지에 대한 고민을 덜어 줄 수 있는 책.


20210202_231801.jpg

 

 

 

먼저 책 표지부터가 무언가 진지한 파이썬 느낌이 강하다고 느껴졌습니다.

20210202_231830.jpg

책을 읽으면서 다 이해를 하지 못하였지만 그래도 책에 있는 실습내용을 한번씩 쭉 훑어보면서 연습을 진행하면 언젠가는 도움이 될 것이라고 생각합니다.

마지막으로 좋은 책 제공과 기회를 주신 한빛미디어 담당자 분들께 감사 드립니다. 3월에도 내용이 탄탄한 도서를 읽고 빨리 리뷰를 남기고 싶습니다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
진지한 파이썬
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
진지한 파이썬
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
진지한 파이썬
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0