이 책의 가장 중요한 주제 중 하나는 어떤 문제든 단 하나의 가장 좋은 접근 방법이란 없다는 점이다. 서로 다른 특징을 갖는 많은 방식이 존재한다.
프로그래밍 스타일에서 스타일이라는 주제는 굉장히 큰 흥미를 불러일으킨다. 영악한 독자라면 예제에서 선택한 이름이나 구두점 등 모든 상세 요소가 꼼꼼하게 PEP-8을 따르지 않았다는 것을 알 수 있을 것이다.
객체지향 파이썬을 정복하기 위해 아주 많은 시간을 다양한 소스의 파이썬 코드를 읽는 데 쓰겠다. 심지어 파이썬 표준 라이브러리 모듈에도 광범위한 다양성이 존재한다. 모든 예제를 완벽하게 일관적으로 표현하는 대신 약간의 불일치를 남겨뒀다. 일관성이 없는 코드가 오히려 실제 환경의 다양한 오픈소스 프로젝트에서 볼 수 있는 코드와 더 잘 어울린다.
이 책은 파이썬 프로그래밍 언어의 여러 고급 기능을 소개하는 책이다. 목표는 최대한 높은 품질의 파이썬 프로그램을 개발하는 것이다. 이렇게 하려면 여러 디자인 대안을 찾아 어떤 디자인이 풀고 있는 문제에 가장 적합하며 성능이 좋은지 알아야 한다.
대부분의 내용은 주어진 디자인의 대안을 살펴보는 일로 구성돼 있다. 어떤 대안은 성능이 더 뛰어나고, 또 어떤 대안은 더 단순하거나 문제 도메인에 더 적합하다. 컴퓨터 프로세싱을 최소화하며 최대한 많은 가치를 내는 가장 좋은 알고리듬과 최선의 데이터 구조를 찾아야 한다. 다시 말해 시간이 곧 돈이고, 시간을 아껴주는 프로그램이 사용자에게 더 많은 가치를 창출한다. 파이썬은 애플리케이션 프로그램이 파이썬의 여러 내부 기능을 바로 사용할 수 있도록 돕는다. 즉, 프로그램을 기존 파이썬 요소와 밀접하게 통합시켜준다. 수많은 파이썬 요소를 활용하면 사용자의 객체지향 디자인과 매끄럽게 통합시킬 수 있다.
다양한 알고리듬과 데이터 구조를 살펴보며 메모리와 성능 대안들을 알아보자. 최종 애플리케이션을 올바르게 최적화하려면 여러 가지 솔루션을 제대로 검토할 수 있는 객체지향 디자인 실력이 필수다. 이 책이 전하고자 하는 가장 중요한 메시지는 어떤 문제든 유일한 정답은 없다는 것이다.
예제에서 최대한 완전한 타입 힌트를 제공하고자 노력했다. 표준 라이브러리가 아닌 외부 패키지를 이용하는 일부 예제는 타입 힌트가 없거나 불완전하다. 타입이 일관되게 쓰였는지 알려면 mypy 도구로 예제를 검사해야 한다.
객체지향 파이썬을 정복하기 위해 긴 시간을 투자해 다양한 소스의 파이썬 코드를 살펴본다. 심지어 파이썬 표준 라이브러리 모듈조차 광범위한 다양성을 지니기 때문에, 예제를 완벽히 일관되게 표현하는 대신 일부러 약간의 불일치를 택했다. 일관성이 부족한 코드를 읽어보는 것도 실제로 다양한 오픈소스 프로젝트의 코드를 읽을 때 도움이 될 것이다.
파이썬은 수많은 개발자, 엔지니어, 데이터 과학자, 취미로 개발하는 사람들 모두가 선호하는 프로그래밍 언어며, 애플리케이션에 힘을 불어넣으면서 빠른 속도, 안전성, 확장성을 제공하는 훌륭한 스크립팅 언어다. 이 책에서 제시하는 일련의 레시피를 따라 하면 특정 주제별로 파이썬 언어 기능에 관한 통찰력을 얻을 수 있다. 구체적인 상황에서의 프로그래밍 언어 또는 표준 라이브러리의 기능을 더 쉽게 이해할 수 있기 때문이다.
이 책은 각각의 레시피별로 특정 문제 및 이슈를 해결하는 방법을 보여주는 접근 방식을 취한다.
모든 비밀 요원이나 스파이에게는 제대로 된 도구와 장치가 필요하다. 요원의 임무가 데이터를 수집하는 것이라면, 고성능의 데이터 처리가 필요하다. 이 책은 가상의 비밀 요원을 설정해서 요원 여러분에게 본부가 요구하는 데이터를 수집하고, 분석하고, 통신하는 과정에서 도움이 될 수 있는 다양한 정보 처리 도구를 제공할 것이다.
파이썬을 사용하면 요원들은 간단한 스크립트를 사용해 데이터를 수집하고, 복잡한 계산을 수행하고, 유용한 결과를 생성할 수 있다. 요원들은 파이썬을 사용해 로컬 파일이나 HTTP 웹서버, FTP 파일 서버로부터 데이터를 끄집어 낼 수 있다.
파이썬에는 다양한 추가 패키지가 있다. 이 책에서는 복잡한 이미지 변환과 처리를 제공하는 Pillow와 HTML 웹페이지로부터 데이터를 추출하도록 돕는 BeautifulSoup를 살펴볼 것이다. 다른 필요가 있는 요원이라면 파이썬 자연어처리 키트(NLTK, Python Natural Language Toolkit), 뉴메릭 파이썬(NumPy, Numeric Python), 또는 사이언티픽 파이썬(SciPy, Scientific Python)을 살펴봐야 할 수도 있다.
파이썬 프로그래밍 언어는 매우 인기가 있으며 다양한 애플리케이션에서 사용된다. 파이썬 언어는 작은 프로그램을 비교적 쉽게 만들 수 있도록 설계됐다. 보다 정교한 소프트웨어를 만들기 위해서는 여러 가지 중요한 프로그래밍 및 소프트웨어 디자인 기술이 필요하다.
이 책은 파이썬으로 프로그램을 만들기 위한 객체지향 접근법을 설명한다. 객체지향 프로그래밍의 용어를 소개하고 단계별 예제를 통해 소프트웨어 디자인 및 파이썬 프로그래밍을 학습한다. 개별 요소로부터 소프트웨어를 빌드하기 위해 상속과 구성 관계를 사용하는 법을 설명한다. 파이썬의 내장 예외 및 내장 데이터 구조는 물론 파이썬 표준 라이브러리의 요소들을 사용하는 방법을 보여준다. 다양한 디자인 패턴을 자세한 예제와 함께 설명한다.
이 책은 소프트웨어가 동작하는지 확인하기 위해 자동화된 테스트를 작성하는 방법도 다룬다. 또한 파이썬에서 제공하는 다양한 동시성 라이브러리를 사용하는 법을 보여준다. 이를 통해 컴퓨터에서 멀티코어 및 멀티프로세서를 사용할 수 있는 소프트웨어를 작성할 수 있다. 사례 연구를 통해서는 약간 복잡한 문제에 대한 여러 가지 솔루션을 보여주는 간단한 머신러닝 예제를 다룬다.
파이썬은 다양한 함수형 프로그래밍 기능을 제공하며 배우기 쉽고 확장하기 쉬운 프로그래밍 언어다. 파이썬은 다양한 데이터 과학 분야의 애플리케이션에서 사용하기에 이상적이다.
실용적인 이 안내서는 다양한 함수형 프로그래밍 기법과 디자인 패턴을 파이썬으로 구현하는 방법을 보여준다. 일반적인 함수형 프로그래밍 개념을 살펴보는 것부터 시작해서, 일급 계층 함수나 고차 함수, 순수 함수 등의 함수형 기능과 그런 기능을 파이썬으로 만드는 방법에 대해 배우게 될 것이다. 추가로, 파이썬에서 일반적인 함수형 최적화를 처리할 수 있는 방법도 보게 된다. 더불어 데이터를 준비와 탐구 기법을 자세히 살펴본다. 더 나아가, 파이썬 표준 라이브러리의 기능이 함수형 프로그래밍 모델에 어떻게 잘 들어맞을 수 있는지 배울 것이다. 그 후 PyMonad 프로젝트와 대규모 시스템에 대한 몇 가지 예제를 사용해 마무리할 것이다.
이 책을 다 읽고 나면, 함수형 프로그래밍이 어떤 것인지와 프로그래밍 과정에 함수형 프로그래밍이 어떤 영향을 끼치는지, 왜 함수형 프로그래밍이 중요한지, 그리고 파이썬으로 함수형 프로그래밍을 어떻게 구현할 수 있는지를 이해할 수 있을 것이다.