Szczegóły ebooka

Python. Zwięzłe kompendium dla programisty

Python. Zwięzłe kompendium dla programisty

David Beazley

Ebook

Przez ostatnie trzydzieści lat Python intensywnie się rozwijał. Stał się dojrzałym językiem programowania, nadającym się do tworzenia zarówno niewielkich, wyspecjalizowanych narzędzi, jak i złożonych systemów. Zakres jego możliwości poszerzają liczne biblioteki i narzędzia. Ta wszechstronność i bogactwo stanowią jednak duże wyzwanie dla programistów, którzy chcieliby nie tyle poznać poszczególne funkcje tego języka, ile dogłębnie go zrozumieć i nauczyć się "pythonicznego" sposobu myślenia.

Ta książka jest zwięzłym, skupionym na praktyce przewodnikiem po Pythonie w wersji 3.6 i nowszych. Dzięki niej skoncentrujesz się na rdzeniu języka i podstawowych zagadnieniach, które musisz doskonale opanować, jeśli chcesz pisać w nim dobry kod. Dowiesz się zatem, jak działa Python i jakich zasad należy przestrzegać podczas tworzenia programów, które później będą łatwe do przetestowania, debugowania i utrzymania. Dobrze zrozumiesz kluczowe kwestie, takie jak abstrakcja danych, kontrola przepływu programu, struktura programu, funkcje, obiekty i moduły. Poszczególne treści zostały zilustrowane przejrzystymi fragmentami kodu, pozwalającymi nie tylko łatwiej przyswoić opisane zagadnienia, ale i poczuć niezwykły urok Pythona - tę magię, która sprawia, że programowanie w tym języku daje mnóstwo przyjemności i satysfakcji!

W książce:

  • czym jest rdzeń Pythona
  • praca z danymi i ich analiza
  • zasady tworzenia przejrzystego i niezawodnego kodu
  • funkcje i idiomy w programowaniu funkcjonalnym
  • generatory, klasy, moduły, pakiety
  • prawidłowa obsługa I/O i korzyści ze stosowania słowników

Python? Zacznij od tego, co w nim najważniejsze!

Przedmowa

Rozdział 1. Podstawy Pythona

  • 1.1. Uruchamianie Pythona
  • 1.2. Programy Pythona
  • 1.3. Prymitywy, zmienne i wyrażenia
  • 1.4. Operatory arytmetyczne
  • 1.5. Warunki i sterowanie przepływem programu
  • 1.6. Ciągi tekstowe
  • 1.7. Operacje na plikach
  • 1.8. Listy
  • 1.9. Krotki
  • 1.10. Zbiory
  • 1.11. Słowniki
  • 1.12. Iteracja i pętle
  • 1.13. Funkcje
  • 1.14. Wyjątki
  • 1.15. Zakończenie programu
  • 1.16. Obiekty i klasy
  • 1.17. Moduły
  • 1.18. Pisanie skryptów
  • 1.19. Pakiety
  • 1.20. Strukturyzacja aplikacji
  • 1.21. Zarządzanie pakietami stron trzecich
  • 1.22. Python pasuje do Twojego mózgu

Rozdział 2. Operatory, wyrażenia i manipulacja danymi

  • 2.1. Literały
  • 2.2. Wyrażenia i lokalizacje
  • 2.3. Standardowe operatory
  • 2.4. Modyfikacje w miejscu
  • 2.5. Porównywanie obiektów
  • 2.6. Operatory porównania porządkowego
  • 2.7. Wyrażenia logiczne i wartości prawdziwe
  • 2.8. Wyrażenia warunkowe
  • 2.9. Operacje obejmujące elementy iterowalne
  • 2.10. Operacje na sekwencjach
  • 2.11. Operacje na mutowalnych obiektach sekwencyjnych
  • 2.12. Operacje na zbiorach
  • 2.13. Operacje na mapowaniach
  • 2.14. Lista, zbiór i słownik
  • 2.15. Wyrażenia generujące
  • 2.16. Operator atrybutu (.)
  • 2.17. Operator wywołania funkcji ()
  • 2.18. Kolejność liczenia
  • 2.19. Podsumowanie: sekretne życie danych

Rozdział 3. Struktura i kontrola przepływu programu

  • 3.1. Struktura i wykonanie programu
  • 3.2. Wykonanie warunkowe
  • 3.3. Pętle i iteracje
  • 3.4. Wyjątki
    • 3.4.1. Hierarchia wyjątków
    • 3.4.2. Wyjątki i kontrola przepływu
    • 3.4.3. Definiowanie nowych wyjątków
    • 3.4.4. Powiązane wyjątki
    • 3.4.5. Śledzenie wyjątków
    • 3.4.6. Wskazówka dotycząca obsługi wyjątków
  • 3.5. Menedżery kontekstu i instrukcja with
  • 3.6. Asercje i __debug__
  • 3.7. Podsumowanie

Rozdział 4. Obiekty, typy i protokoły

  • 4.1. Podstawowe pojęcia
  • 4.2. Tożsamość i typ obiektu
  • 4.3. Zliczanie referencji i odśmiecanie pamięci
  • 4.4. Referencje i kopie
  • 4.5. Reprezentacja obiektu i wyświetlanie
  • 4.6. Obiekty pierwszoklasowe
  • 4.7. Używanie wartości None dla opcjonalnych lub brakujących danych
  • 4.8. Protokoły obiektu i abstrakcja danych
  • 4.9. Protokół obiektu
  • 4.10. Protokół liczbowy
  • 4.11. Protokół porównania
  • 4.12. Protokoły konwersji
  • 4.13. Protokół kontenera
  • 4.14. Protokół iteracji
  • 4.15. Protokół atrybutów
  • 4.16. Protokół funkcji
  • 4.17. Protokół menedżera kontekstu
  • 4.18. Podsumowanie: pythoniczność

Rozdział 5. Funkcje

  • 5.1. Definicje funkcji
  • 5.2. Argumenty domyślne
  • 5.3. Argumenty wariadyczne (zmienna liczba argumentów)
  • 5.4. Argumenty słów kluczowych
  • 5.5. Wariadyczne argumenty słów kluczowych
  • 5.6. Funkcje akceptujące wszystkie dane wejściowe
  • 5.7. Argumenty tylko pozycyjne
  • 5.8. Nazwy, wpisy dokumentacyjne i wskazówki dotyczące typów
  • 5.9. Zastosowanie funkcji i przekazywanie parametrów
  • 5.10. Zwracane wartości
  • 5.11. Obsługa błędów
  • 5.12. Zasady określania zakresu
  • 5.13. Rekurencja
  • 5.14. Wyrażenie lambda
  • 5.15. Funkcje wyższego rzędu
  • 5.16. Przekazywanie argumentów w funkcjach zwrotnych
  • 5.17. Zwracanie wyników z wywołań zwrotnych
  • 5.18. Dekoratory
  • 5.19. Funkcje map, filter i reduce
  • 5.20. Przegląd funkcji, atrybutów i sygnatur
  • 5.21. Inspekcja środowiska
  • 5.22. Dynamiczne wykonywanie i tworzenie kodu
  • 5.23. Funkcje asynchroniczne i await
  • 5.24. Podsumowanie: przemyślenia na temat funkcji i kompozycji

Rozdział 6. Generatory

  • 6.1. Generatory i yield
  • 6.2. Generatory z możliwością ponownego uruchomienia
  • 6.3. Delegowanie generatora
  • 6.4. Używanie generatorów w praktyce
  • 6.5. Ulepszone generatory i wyrażenia yield
  • 6.6. Zastosowania ulepszonych generatorów
  • 6.7. Generatory i obsługa await
  • 6.8. Podsumowanie: krótka historia generatorów i patrzenie w przyszłość

Rozdział 7. Klasy i programowanie obiektowe

  • 7.1. Obiekty
  • 7.2. Wyrażenie class
  • 7.3. Instancje
  • 7.4. Dostęp do atrybutów
  • 7.5. Zasady ustalania zakresu
  • 7.6. Przeciążanie operatora i protokoły
  • 7.7. Dziedziczenie
  • 7.8. Unikanie dziedziczenia poprzez kompozycję
  • 7.9. Unikanie dziedziczenia poprzez funkcje
  • 7.10. Wiązanie dynamiczne i technika kaczego typowania
  • 7.11. Niebezpieczeństwo dziedziczenia po typach wbudowanych
  • 7.12. Zmienne i metody klasy
  • 7.13. Metody statyczne
  • 7.14. Słowo na temat wzorców projektowych
  • 7.15. Enkapsulacja danych i atrybuty prywatne
  • 7.16. Wskazówka typu
  • 7.17. Właściwości
  • 7.18. Typy, interfejsy i klasy abstrakcyjne
  • 7.19. Wielokrotne dziedziczenie, interfejsy i domieszki
  • 7.20. Dyspozycja oparta na typie
  • 7.21. Dekoratory klas
  • 7.22. Nadzorowane dziedziczenie
  • 7.23. Cykl życia obiektu i zarządzanie pamięcią
  • 7.24. Słabe referencje
  • 7.25. Wewnętrzna reprezentacja obiektów i wiązanie atrybutu
  • 7.26. Proxy, wrapper i delegacje
  • 7.27. Zmniejszenie wykorzystania pamięci za pomocą __slots__
  • 7.28. Deskryptory
  • 7.29. Proces definicji klasy
  • 7.30. Dynamiczne tworzenie klas
  • 7.31. Metaklasy
  • 7.32. Obiekty wbudowane dla instancji i klas
  • 7.33. Podsumowanie: zachowaj prostotę

Rozdział 8. Moduły i pakiety

  • 8.1. Moduły i wyrażenie import
  • 8.2. Buforowanie modułów
  • 8.3. Importowanie wybranych nazw z modułu
  • 8.4. Importy cykliczne
  • 8.5. Ponowne ładowanie i zwolnienie modułu
  • 8.6. Kompilacja modułów
  • 8.7. Ścieżka wyszukiwania modułów
  • 8.8. Wykonanie jako program główny
  • 8.9. Pakiety
  • 8.10. Import wewnątrz pakietu
  • 8.11. Uruchamianie podmodułu pakietu jako skryptu
  • 8.12. Kontrolowanie przestrzeni nazw pakietu
  • 8.13. Kontrolowanie eksportu pakietów
  • 8.14. Dane pakietu
  • 8.15. Obiekty modułu
  • 8.16. Wdrażanie pakietów Pythona
  • 8.17. Przedostatnie słowo: zacznij od pakietu
  • 8.18. Podsumowanie: zachowaj prostotę

Rozdział 9. Obsługa operacji wejścia-wyjścia

  • 9.1. Reprezentacja danych
  • 9.2. Kodowanie i dekodowanie tekstu
  • 9.3. Formatowanie tekstu i bajtów
  • 9.4. Czytanie opcji wiersza poleceń
  • 9.5. Zmienne środowiskowe
  • 9.6. Pliki i obiekty plików
    • 9.6.1. Nazwy plików
    • 9.6.2. Tryby plików
    • 9.6.3. Buforowanie operacji wejścia-wyjścia
    • 9.6.4. Kodowanie w trybie tekstowym
    • 9.6.5. Obsługa wiersza w trybie tekstowym
  • 9.7. Warstwy abstrakcyjne wejścia-wyjścia
    • 9.7.1. Metody plików
  • 9.8. Standardowe wejście, wyjście i błąd
  • 9.9. Katalogi
  • 9.10. Funkcja print()
  • 9.11. Generowanie wyjścia
  • 9.12. Pobieranie danych wejściowych
  • 9.13. Serializacja obiektów
  • 9.14. Operacje blokujące i współbieżność
    • 9.14.1. Nieblokujące operacje wejścia-wyjścia
    • 9.14.2. Odpytywanie operacji wejścia-wyjścia
    • 9.14.3. Wątki
    • 9.14.4. Równoczesne wykonywanie z asyncio
  • 9.15. Standardowe moduły biblioteczne
    • 9.15.1. Moduł asyncio
    • 9.15.2. Moduł binascii
    • 9.15.3. Moduł cgi
    • 9.15.4. Moduł configparser
    • 9.15.5. Moduł csv
    • 9.15.6. Moduł errno
    • 9.15.7. Moduł fcntl
    • 9.15.8. Moduł hashlib
    • 9.15.9. Pakiet http
    • 9.15.10. Moduł io
    • 9.15.11. Moduł json
    • 9.15.12. Moduł logging
    • 9.15.13. Moduł os
    • 9.15.14. Moduł os.path
    • 9.15.15. Moduł pathlib
    • 9.15.16. Moduł re
    • 9.15.17. Moduł shutil
    • 9.15.18. Moduł select
    • 9.15.19. Moduł smtplib
    • 9.15.20. Moduł socket
    • 9.15.21. Moduł struct
    • 9.15.22. Moduł subprocess
    • 9.15.23. Moduł tempfile
    • 9.15.24. Moduł textwrap
    • 9.15.25. Moduł threading
    • 9.15.26. Moduł time
    • 9.15.27. Pakiet urllib
    • 9.15.28. Moduł unicodedata
    • 9.15.29. Pakiet xml
  • 9.16. Podsumowanie

Rozdział 10. Funkcje wbudowane i biblioteka standardowa

  • 10.1. Funkcje wbudowane
  • 10.2. Wyjątki wbudowane
    • 10.2.1. Klasy bazowe wyjątków
    • 10.2.2. Atrybuty wyjątków
    • 10.2.3. Predefiniowane klasy wyjątków
  • 10.3. Biblioteka standardowa
    • 10.3.1. Moduł collections
    • 10.3.2. Moduł datetime
    • 10.3.3. Moduł itertools
    • 10.3.4. Moduł inspect
    • 10.3.5. Moduł math
    • 10.3.6. Moduł os
    • 10.3.7. Moduł random
    • 10.3.8. Moduł re
    • 10.3.9. Moduł shutil
    • 10.3.10. Moduł statistics
    • 10.3.11. Moduł sys
    • 10.3.12. Moduł time
    • 10.3.13. Moduł turtle
    • 10.3.14. Moduł unittest
  • 10.4. Podsumowanie: korzystaj z wbudowanych elementów
  • Tytuł: Python. Zwięzłe kompendium dla programisty
  • Autor: David Beazley
  • Tytuł oryginału: Python Distilled (Developer's Library)
  • Tłumaczenie: Łukasz Wójcicki
  • ISBN: 978-83-283-9020-1, 9788328390201
  • Data wydania: 2022-12-06
  • Format: Ebook
  • Identyfikator pozycji: pyzwko
  • Wydawca: Helion