Przewodnik po Pythonie

Book description

Python to potężny, wszechstronny, a do tego cechujący się prostotą i elastycznością język ułatwiający wydajne tworzenie czytelnego kodu. Nadaje się do bardzo różnych zastosowań, włączając w to wysoce specjalistyczne zadania, takie jak analiza danych. Python cieszy się niezwykłym wsparciem społeczności, dzięki czemu powstają nowe ciekawe narzędzia dla programistów. To wszystko sprawia, że dla twórców oprogramowania biegłe posługiwanie się Pythonem staje się bardzo niezbędną umiejętnością.

Niniejsza książka jest przeznaczona dla średnio zaawansowanych programistów. Zawarto tu zbiór najlepszych praktyk i opis ulubionych narzędzi entuzjastów Pythona. Przedstawiono doskonałe biblioteki do aplikacji konsolowych, graficznych interfejsów i aplikacji internetowych oraz do analizy danych, obróbki zdjęć i dźwięku, a także biblioteki sieciowe do akcji asynchronicznych, serializacji i kryptografii. Znalazły się tu liczne przykłady fragmentów znakomitego kodu, opisano również dobre praktyki pakietowania i dystrybucji kodu. Książka ta stanowi świetne źródło informacji o konwencjach i praktykach wypracowanych przez społeczność Pythona, co będzie szczególnie cenne dla każdego, kto chce zyskać prawdziwą biegłość w posługiwaniu się tym językiem.

Najważniejsze zagadnienia przedstawione w książce:

edytory kodu, środowiska programistyczne i interpretery Pythona,
styl kodu, konwencje i idiomy oraz struktura aplikacji,
techniki testowania aplikacji,
operacje na danych, data mining i zastosowania naukowe,
praca na bazach danych.
Python — poznaj i stosuj narzędzia ekspertów!

Table of contents

  1. Przedmowa
    1. Konwencje zastosowane w tej książce
    2. Podziękowania
  2. Część I Wprowadzenie
  3. Rozdział 1. Wybór interpretera
    1. Python 2 kontra Python 3
    2. Zalecenia
    3. Więc… 3?
    4. Implementacje
      1. CPython
      2. Stackless
      3. PyPy
      4. Jython
      5. IronPython
      6. PythonNet
      7. Skulpt
      8. MicroPython
  4. Rozdział 2. Prawidłowa instalacja Pythona
    1. Instalacja Pythona na macOS
      1. Setuptools i pip
      2. virtualenv
    2. Instalacja Pythona w Linuksie
      1. Setuptools i pip
      2. Narzędzia deweloperskie
      3. virtualenv
    3. Instalacja Pythona w Windowsie
      1. Setuptools i pip
      2. virtualenv
    4. Komercyjne redystrybucje Pythona
  5. Rozdział 3. Twoje środowisko programistyczne
    1. Edytory tekstu
      1. Sublime Text
      2. Vim
        1. Python-mode
      3. Emacs
      4. TextMate
      5. Atom
      6. Visual Studio Code
    2. Zintegrowane środowiska programistyczne
      1. PyCharm/IntelliJ IDEA
      2. Aptana Studio 3/Eclipse + LiClipse + PyDev
      3. WingIDE
      4. Spyder
      5. Ninja-IDE
      6. Komodo IDE
      7. Eric (Eric Python IDE)
      8. Visual Studio
    3. Interaktywne narzędzia
      1. IDLE
      2. IPython
      3. bpython
    4. Narzędzia izolacji
      1. Środowiska wirtualne
        1. Tworzenie i aktywacja środowiska wirtualnego
          1. W macOS i Linuksie
          2. W Windowsie
        2. Dodawanie bibliotek to środowiska wirtualnego
        3. Dezaktywacja środowiska wirtualnego
      2. Pyenv
      3. Autoenv
      4. Virtualenvwrapper
      5. Buildout
      6. conda
      7. Docker
  6. Część II Przejdźmy do rzeczy
  7. Rozdział 4. Pisanie świetnego kodu
    1. Styl kodu
      1. PEP 8
      2. PEP 20 (czyli Zen Pythona)
      3. Ogólne porady
        1. Wyrażone wprost jest lepsze niż domniemane
        2. Rzadkie jest lepsze niż gęste
        3. Błędy zawsze powinny być sygnalizowane. Chyba że zostaną celowo ukryte
        4. Argumenty funkcji powinny być intuicyjne
        5. Jeśli rozwiązanie jest trudno wyjaśnić, to jest ono złym pomysłem
        6. Wszyscy jesteśmy odpowiedzialnymi użytkownikami
        7. Zwracaj wartości w jednym miejscu
      4. Konwencje
        1. Alternatywy dla sprawdzania równości
        2. Dostęp do elementów słownika
        3. Manipulowanie listami
        4. Kontynuacja długiej linii kodu
      5. Idiomy
        1. Rozpakowywanie
        2. Ignorowanie wartości
        3. Tworzenie listy tych samych elementów o długości N
        4. Konteksty zabezpieczone przed wyjątkami
      6. Ogólnie znane dziwactwa Pythona
        1. Zmienne argumenty domyślne
        2. Zamknięcia późnowiążące
    2. Strukturyzacja projektu
      1. Moduły
        1. Importowanie modułów
      2. Pakiety
      3. Programowanie obiektowe
      4. Dekoratory
      5. Typowanie dynamiczne
      6. Typy zmienne i niezmienne
      7. Dostarczanie zależności
    3. Testowanie kodu
      1. Wskazówki do testowania
        1. Tylko jedna rzecz na test
        2. Konieczna jest niezależność
        3. Precyzja jest lepsza od skąpstwa
        4. Liczy się prędkość
        5. RTMF (Read the manual, friend! — Czytaj instrukcje, kolego!)
        6. Testuj wszystko, gdy zaczynasz — i gdy kończysz
        7. Haki automatyzacji kontroli wersji są wspaniałe
        8. Napisz test przerywający, kiedy chcesz zrobić przerwę
        9. W przypadku problemów debuguj, korzystając z testu
        10. Jeśli test trudno objaśnić, to powodzenia w poszukiwaniu współpracowników
        11. Jeśli test łatwo objaśnić, jest prawie zawsze dobrym pomysłem
        12. Przede wszystkim nie panikuj
      2. Podstawy testowania
        1. unittest
        2. Mock (w unittest)
        3. doctest
      3. Przykłady
        1. Przykład — testowanie w Tablib
        2. Przykład — testowanie w Requests
      4. Inne popularne narzędzia
        1. pytest
        2. Nose
        3. tox
        4. Opcje na starsze wersje Pythona
          1. unittest2
          2. Mock
          3. fixture
        5. Lettuce i Behave
    4. Dokumentacja
      1. Dokumentacja projektu
      2. Opublikowanie kodu
        1. Sphinx
        2. reStructured Text
      3. Docstring kontra komentarze blokowe
    5. Logowanie
      1. Logowanie w przypadku biblioteki
      2. Logowanie w przypadku aplikacji
        1. Przykładowa konfiguracja przy użyciu pliku INI
        2. Przykład konfiguracji przy użyciu słownika
        3. Przykład konfiguracji bezpośrednio w kodzie
    6. Wybór licencji
      1. Licencja wstępna
      2. Opcje
      3. Licencjonowanie źródeł
  8. Rozdział 5. Analiza świetnego kodu
    1. Wspólne cechy
    2. HowDoI
      1. Analiza jednoplikowych skryptów
        1. Analiza dokumentacji HowDoI
        2. Korzystanie z HowDoI
        3. Analiza kodu HowDoI
      2. Przykłady struktury z HowDoI
        1. Niech funkcja robi tylko jedną rzecz
        2. Korzystaj z danych dostępnych z systemu
      3. Przykłady stylu z HowDoI
        1. Nazwy funkcji poprzedzone podkreślnikiem (wszyscy jesteśmy odpowiedzialnymi użytkownikami)
        2. Zajmij się kompatybilnością w jednym miejscu (liczy się czytelność)
        3. Wybory pythoniczne (ładne jest lepsze od brzydkiego)
    3. Diamond
      1. Analiza większej aplikacji
        1. Analiza dokumentacji Diamonda
        2. Korzystanie z Diamonda
        3. Analiza kodu Diamonda
      2. Przykłady struktury z Diamonda
        1. Umieść różne funkcjonalności w różnych przestrzeniach nazw (to naprawdę dobry pomysł)
        2. Rozszerzalne przez użytkownika klasy własne (złożone jest lepsze niż skomplikowane)
          1. Złożone kontra skomplikowane
          2. Prosty interfejs użytkownika
          3. Bardziej złożony wewnętrzny kod
      3. Przykłady stylu z Diamonda
        1. Przykład zastosowania zamknięcia (kiedy pułapka nie jest pułapką)
    4. Tablib
      1. Analiza małej biblioteki
        1. Analiza dokumentacji Tabliba
        2. Korzystanie z Tabliba
        3. Analiza kodu Tabliba
      2. Przykłady struktury z Tabliba
        1. Brak niepotrzebnego kodu obiektowego w formatach (korzystaj z przestrzeni nazw do grupowania funkcji)
        2. Deskryptory i dekoratory własności (czyli jak konsekwentne decyzje inżyniera skutkują poprawą jakości API)
        3. Programowo rejestrowane formaty pliku. Nie powtarzaj się (DRY — Don’t Repeat Yourself)
        4. Dostarczone zależności pakietu (przykład dostarczania)
        5. Oszczędzanie pamięci z __slots__ (optymalizuj rozsądnie)
      3. Przykłady stylu z Tabliba
        1. Przeciążanie operatorów (piękne jest lepsze niż brzydkie)
    5. Requests
      1. Analiza większej biblioteki
        1. Analiza dokumentacji Requests
        2. Korzystanie z Requests
        3. Analiza kodu Requests
      2. Przykłady struktury z Requests
        1. Wysokopoziomowe API (prawdopodobnie jedyny właściwy sposób zrobienia tego)
        2. Obiekty Request i PreparedRequest (wszyscy jesteśmy odpowiedzialnymi użytkownikami)
      3. Przykłady stylu z Requests
        1. Zbiory i arytmetyka zbiorów (przyjemny pythoniczny idiom)
        2. Kody statusów (liczy się czytelność)
    6. Werkzeug
      1. Analiza kodu zestawu narzędzi
        1. Analiza dokumentacji Werkzeuga
        2. Korzystanie z Werkzeuga
        3. Analiza kodu Werkzeuga
      2. Przykłady stylu z Werkzeuga
        1. Elegancki sposób dedukcji typów (jeśli rozwiązanie jest łatwo wyjaśnić, to może ono być dobrym pomysłem)
        2. Wyrażenia regularne (liczy się czytelność)
      3. Przykłady struktury z Werkzeuga
        1. Dekoratory oparte na klasach (pythoniczne użycie dynamicznego typowania)
        2. Response.__call__
        3. Domieszki (również naprawdę świetny pomysł)
    7. Flask
      1. Analiza kodu frameworka
        1. Analiza dokumentacji Flaska
        2. Korzystanie z Flaska
        3. Analiza kodu Flaska
      2. Przykłady stylu z Flaska
        1. Dekoratory trasowania Flaska (piękne jest lepsze niż brzydkie)
      3. Przykłady struktury z Flaska
        1. Ustawienia domyślne specyficzne dla aplikacji (proste jest lepsze niż skomplikowane)
        2. Modularność (to również naprawdę świetny pomysł)
  9. Rozdział 6. Publikowanie świetnego kodu
    1. Przydatne słownictwo i pojęcia
    2. Pakietowanie własnego kodu
      1. Conda
      2. PyPI
        1. Przykładowy projekt
        2. Korzystaj z pipa, a nie z easy_install
        3. Osobiste PyPI
        4. Pypiserver
        5. PyPI na S3
        6. Obsługa systemu kontroli wersji przez pip
    3. Zamrażanie swojego kodu
      1. PyInstaller
      2. cx_Freeze
      3. py2app
      4. py2exe
      5. bbFreeze
    4. Pakietowanie dla dystrybucji budowy Linuksa
    5. Wykonywalne pliki ZIP
  10. Część III Przewodnik po scenariuszach
  11. Rozdział 7. Interakcja z użytkownikiem
    1. Notatniki Jupytera
    2. Aplikacje konsolowe
      1. argparse
      2. Docopt
      3. plac
      4. Click
      5. Clint
      6. Cliff
    3. Aplikacje z interfejsem graficznym
      1. Biblioteki widżetów
        1. Tk
        2. Kivy
        3. Qt
        4. GTK+
        5. wxWidget
        6. Objective-C
      2. Produkcja gier
    4. Aplikacje webowe
      1. Frameworki webowe (mikroframeworki)
        1. Django
        2. Flask
        3. Tornado
        4. Pyramid
      2. Silniki szablonów webowych
        1. Jinja2
        2. Chameleon
        3. Mako
      3. Implementacja w sieci
        1. Hosting
        2. Serwery webowe
        3. Serwery WSGI
  12. Rozdział 8. Zarządzanie i ulepszanie kodu
    1. Ciągła integracja
      1. Tox
    2. Zarządzanie systemem
      1. Travis-CI
      2. Jenkins
      3. Buildbot
      4. Automatyzacja serwera
        1. Salt
        2. Ansible
        3. Puppet
        4. Chef
        5. CFEngine
      5. Monitorowanie systemu i zadań
        1. Psutil
        2. Fabric
        3. Luigi
    3. Szybkość
      1. Threading
      2. Multiprocessing
      3. Subprocess
      4. PyPy
      5. Cython
      6. Numba
      7. Biblioteki GPU
      8. Wchodzenie w interakcję z bibliotekami C, C++, FORTRANA
        1. C Foreign Function Interface
        2. ctypes
        3. F2PY
        4. SWIG
        5. Boost.Python
  13. Rozdział 9. Interfejsy oprogramowania
    1. Klienty sieciowe
      1. Webowe API
        1. Parsowanie JSON
        2. Parsowanie XML
        3. Zgarnianie stron internetowych
        4. lxml
    2. Serializacja danych
      1. Pickle
      2. Międzyjęzykowa serializacja
      3. Kompresja
      4. Protokół buforowania
    3. Systemy rozproszone
      1. Sieci
        1. Narzędzia do wydajności sieciowej z biblioteki standardowej Pythona
        2. gevent
        3. Twisted
        4. PyZMQ
        5. RabbitMQ
    4. Kryptografia
      1. ssl, hashlib i secrets
      2. pyOpenSSL
      3. PyNaCl i libnacl
      4. Cryptography
      5. PyCrypto
      6. bcrypt
  14. Rozdział 10. Operacje na danych
    1. Zastosowania naukowe
      1. IPython
      2. NumPy
      3. SciPy
      4. Matplotlib
      5. Pandas
      6. Scikit-Learn
      7. Rpy2
      8. decimal, fractions i numbers
      9. SymPy
    2. Operacje na danych tekstowych i data mining
      1. Narzędzia do operacji na łańcuchach w bibliotece standardowej Pythona
        1. nltk
        2. SyntaxNet
      2. Operacje na obrazach
        1. Pillow
        2. cv2
        3. Scikit-Image
  15. Rozdział 11. Trwałość danych
    1. Ustrukturyzowane pliki
    2. Biblioteki baz danych
      1. sqlite3
      2. SQLAlchemy
      3. Django ORM
      4. peewee
      5. PonyORM
      6. SQLObject
      7. Records
      8. Biblioteki baz danych NoSQL
  16. Dodatek A Uwagi dodatkowe
    1. Społeczność Pythona
      1. BDFL
      2. Python Software Foundation
      3. PEP-y
        1. PEP-y godne uwagi
        2. Zgłaszanie PEP-a
        3. Konferencje Pythona
        4. Grupy użytkowników Pythona
    2. Nauka Pythona
      1. Początkujący
      2. Średnio zaawansowani
      3. Zaawansowani
      4. Dla inżynierów i naukowców
      5. Różne tematy
      6. Odniesienia
      7. Dokumentacja
      8. Aktualności
      9. O autorach
      10. Kolofon

Product information

  • Title: Przewodnik po Pythonie
  • Author(s): Kenneth Reitz, Tanya Schlusser
  • Release date: January 2018
  • Publisher(s): Helion
  • ISBN: 9788328337329