Python. Zwięzłe kompendium dla programisty - ebook
Python. Zwięzłe kompendium dla programisty - 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!
Spis treści
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
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-9020-1 |
Rozmiar pliku: | 3,0 MB |