Python. Wprowadzenie. Wydanie VI - Helion

Autor: Mark Lutz
Tytuł oryginału: Learning Python: Powerful Object-Oriented Programming, 6th Edition
Tłumaczenie: Anna Mizerska z wykorzystaniem fragment
ISBN: 978-83-289-2942-5
stron: 1107, Format: 165x235, okładka: mi
Data wydania: 2025-10-01
Księgarnia: Helion
Cena książki: 179,10 zł (poprzednio: 199,00 zł)
Oszczędzasz: 10% (-19,90 zł)
Tytuł oryginału: Learning Python: Powerful Object-Oriented Programming, 6th Edition
Tłumaczenie: Anna Mizerska z wykorzystaniem fragment
ISBN: 978-83-289-2942-5
stron: 1107, Format: 165x235, okładka: mi
Data wydania: 2025-10-01
Księgarnia: Helion
Cena książki: 179,10 zł (poprzednio: 199,00 zł)
Oszczędzasz: 10% (-19,90 zł)
Nakład wyczerpany
Tagi: Python - Programowanie
Nic dziwnego,
Zobacz także:
- Django 4. Praktyczne tworzenie aplikacji sieciowych. Wydanie IV 125,48 zł, (38,90 zł -69%)
- Django. Kurs video. Aplikacje webowe w Pythonie 119,00 zł, (47,60 zł -60%)
- Web scraping w Pythonie. Kurs video. Od pobrania kodu 198,98 zł, (79,59 zł -60%)
- Flask. Kurs video. Tworzenie REST API w Pythonie 139,00 zł, (55,60 zł -60%)
- Python od podstaw. Kurs video. Tworzenie pierwszych gier w PyCharm 129,00 zł, (51,60 zł -60%)
Spis treści
Python. Wprowadzenie. Wydanie VI -- spis treści
Przedmowa
Część I. Wprowadzenie
- 1. Pytania i odpowiedzi dotyczące Pythona
- Dlaczego ludzie używają Pythona?
- Jakość oprogramowania
- Wydajność programistów
- Czy Python jest językiem skryptowym?
- Jakie są zatem wady języka Python?
- Kto dzisiaj używa Pythona?
- Co mogę zrobić za pomocą Pythona?
- Programowanie systemowe
- Graficzne interfejsy użytkownika (GUI) i interfejsy użytkownika (UI)
- Skrypty internetowe
- Integracja komponentów
- Dostęp do baz danych
- Szybkie prototypowanie
- Programowanie numeryczne i naukowe
- I więcej: sztuczna inteligencja, gry, przetwarzanie obrazu, wyszukiwanie danych, testowanie, Excel, aplikacje.
- Jakie są techniczne mocne strony Pythona?
- Jest zorientowany obiektowo i funkcyjny
- Jest darmowy i otwarty
- Jest przenośny
- Ma duże możliwości
- Można go łączyć z innymi językami
- Jest względnie łatwy w użyciu
- Jest względnie łatwy do nauczenia się
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Dlaczego ludzie używają Pythona?
- 2. Jak Python wykonuje programy?
- Wprowadzenie do interpretera Pythona
- Wykonywanie programu
- Z punktu widzenia programisty
- Z punktu widzenia Pythona
- Warianty modeli wykonywania
- Alternatywne implementacje Pythona
- Samodzielne pliki wykonywalne
- Przyszłe możliwości
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- 3. Jak uruchamia się programy?
- Instalacja Pythona
- Interaktywny kod
- Uruchamianie interaktywnego środowiska REPL
- Gdzie uruchamiać programy - katalogi z kodem źródłowym
- Czego nie wpisywać - znaki zachęty i komentarze
- Inne środowiska REPL Pythona
- Interaktywne wykonywanie kodu
- Do czego służy sesja interaktywna?
- Pliki źródłowe
- Pierwszy skrypt
- Wykonywanie plików z poziomu wiersza poleceń powłoki
- Sposoby użycia wiersza poleceń
- Inne sposoby uruchamiania plików
- Klikanie ikon plików
- Interfejs użytkownika środowiska IDLE
- Inne środowiska IDE
- Aplikacje na smartfony
- WebAssembly dla przeglądarek
- Notatniki Jupyter do celów naukowych
- Kompilatory AOT dla zwiększenia szybkości
- Uruchamianie kodu w kodzie
- Inne opcje wykonywania kodu
- Jaką opcję wybrać?
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Sprawdź swoją wiedzę - ćwiczenia do części I
- Debugowanie kodu w Pythonie
Część II. Obiekty i operacje
- 4. Wprowadzenie do obiektów Pythona
- Hierarchia pojęć w Pythonie
- Dlaczego korzystamy z obiektów wbudowanych?
- Najważniejsze typy danych w Pythonie
- Liczby
- Łańcuchy znaków
- Operacje na sekwencjach
- Niezmienność
- Metody specyficzne dla typu
- Uzyskiwanie pomocy
- Inne sposoby kodowania łańcuchów znaków
- Ciągi znaków w formacie Unicode
- Listy
- Operacje na typach sekwencyjnych
- Operacje specyficzne dla typu
- Sprawdzanie granic
- Zagnieżdżanie
- Listy składane
- Słowniki
- Operacje na odwzorowaniach
- Zagnieżdżanie raz jeszcze
- Brakujące klucze - testowanie za pomocą if
- Sortowanie kluczy - pętle for
- Krotki
- Do czego służą krotki?
- Pliki
- Pliki tekstowe Unicode i binarne
- Inne narzędzia podobne do plików
- Inne typy podstawowe
- Zbiory
- Wartości logiczne i obiekt None
- Typy
- Podpowiedzi typów
- Klasy definiowane przez użytkownika
- I wszystko inne
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- 5. Typy liczbowe
- Podstawy typów liczbowych Pythona
- Literały liczbowe
- Wbudowane narzędzia liczbowe
- Operatory wyrażeń Pythona
- Połączone operatory stosują się do priorytetów
- Podwyrażenia grupowane są w nawiasach
- Pomieszane typy poddawane są konwersji
- Wprowadzenie: przeciążanie operatorów i polimorfizm
- Liczby w akcji
- Zmienne i podstawowe wyrażenia
- Formaty wyświetlania liczb
- Operatory porównania
- Operatory dzielenia
- Precyzja liczb całkowitych
- Liczby zespolone
- Notacja szesnastkowa, ósemkowa i dwójkowa
- Operacje na poziomie bitów
- Znaki podkreślenia jako separatory w liczbach
- Inne wbudowane narzędzia numeryczne
- Inne typy liczbowe
- Typ Decimal (liczby dziesiętne)
- Typ Fraction (liczby ułamkowe)
- Zbiory
- Wartości Boolean
- Rozszerzenia numeryczne
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Podstawy typów liczbowych Pythona
- 6. Wprowadzenie do typów dynamicznych
- Sprawa brakujących deklaracji typu
- Zmienne, obiekty i referencje
- Typy powiązane są z obiektami, a nie ze zmiennymi
- Obiekty są uwalniane
- Referencje współdzielone
- Referencje współdzielone a modyfikacje w miejscu
- Referencje współdzielone a równość
- Typy dynamiczne są wszędzie
- Podpowiedzi typów: opcjonalne, nieużywane i po co?
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Sprawa brakujących deklaracji typu
- 7. Łańcuchy znaków
- Łańcuchy znaków - podstawy
- Literały łańcuchów znaków
- Łańcuchy znaków w apostrofach i cudzysłowach są tym samym
- Sekwencje ucieczki reprezentują znaki specjalne
- Surowe łańcuchy znaków blokują sekwencje ucieczki
- Potrójne cudzysłowy i apostrofy kodują łańcuchy znaków będące wielowierszowymi blokami
- Łańcuchy znaków w akcji
- Podstawowe operacje
- Indeksowanie i wycinki
- Narzędzia do konwersji łańcuchów znaków
- Modyfikowanie łańcuchów znaków - część I: działania na sekwencjach
- Metody łańcuchów znaków
- Składnia wywoływania metod
- Metody typów znakowych
- Modyfikowanie łańcuchów znaków - część II: metody łańcuchów znaków
- Więcej metod łańcuchów znaków - analiza składniowa tekstu
- Inne często używane metody łańcuchów znaków
- Formatowanie łańcuchów znaków - triatlon
- Opcje formatowania łańcuchów znaków
- Formatowanie z użyciem wyrażeń formatujących
- Formatowanie łańcuchów z użyciem metody format
- Podstawy
- Zaawansowana składnia wywołań metody format
- Literał formatowania f-string
- A zwycięzcą jest.
- Generalne kategorie typów
- Typy z jednej kategorii współdzielą zbiory operacji
- Typy mutowalne można modyfikować w miejscu
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- 8. Listy i słowniki
- Listy
- Listy w akcji
- Podstawowe operacje na listach
- Indeksowanie i wycinki
- Modyfikacja list w miejscu
- Iteracje po listach i składanie list
- Słowniki
- Słowniki w akcji
- Podstawowe operacje na słownikach
- Modyfikacja słowników w miejscu
- Inne metody słowników
- Inne sposoby tworzenia słowników
- Słowniki składane
- Kolejność wstawiania kluczy
- Operator "sumy" dla słowników
- Przykład: baza danych o książkach
- Uwagi na temat korzystania ze słowników
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- 9. Krotki, pliki i wszystko inne
- Krotki
- Krotki w akcji
- Dlaczego istnieją listy i krotki?
- Repetytorium: rekordy - krotki nazwane
- Pliki
- Otwieranie plików
- Wykorzystywanie plików
- Pliki w akcji
- Pliki tekstowe i binarne - krótka historia
- Przechowywanie obiektów Pythona w plikach i ich przetwarzanie
- Przechowywanie natywnych obiektów Pythona - moduł pickle
- Przechowywanie obiektów Pythona w formacie JSON
- Przechowywanie obiektów za pomocą innych narzędzi
- Menedżery kontekstu plików
- Inne narzędzia powiązane z plikami
- Przegląd i podsumowanie podstawowych typów obiektów
- Elastyczność obiektów
- Referencje a kopie
- Porównania, testy równości i prawda
- Porównywanie słowników
- Prawda czy fałsz, czyli znaczenie True i False w Pythonie
- Hierarchie typów Pythona
- Obiekty typów
- Inne typy w Pythonie
- Pułapki typów wbudowanych
- Przypisanie tworzy referencje, nie kopie
- Powtórzenie dodaje jeden poziom zagłębienia
- Uwaga na cykliczne struktury danych
- Typów niemutowalnych nie można modyfikować w miejscu
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Sprawdź swoją wiedzę - ćwiczenia do części II
- Krotki
Część III. Instrukcje i składnia
- 10. Wprowadzenie do instrukcji Pythona
- Raz jeszcze o hierarchii pojęciowej języka Python
- Instrukcje Pythona
- Historia dwóch if
- Co dodaje Python?
- Co usuwa Python?
- Skąd bierze się składnia z użyciem wcięć?
- Kilka przypadków specjalnych
- Szybki przykład: interaktywne pętle
- Prosta pętla interaktywna
- Wykonywanie obliczeń na danych wpisywanych przez użytkownika
- Obsługa błędów poprzez sprawdzanie danych wejściowych
- Obsługa błędów za pomocą instrukcji try
- Kod zagnieżdżony na trzy poziomy głębokości
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Raz jeszcze o hierarchii pojęciowej języka Python
- 11. Przypisania, wyrażenia i wyświetlanie
- Instrukcje przypisania
- Formy instrukcji przypisania
- Podstawowe przypisanie
- Przypisanie sekwencji
- Rozszerzona składnia rozpakowania sekwencji w Pythonie 3.x
- Przypisanie z wieloma celami
- Przypisania rozszerzone
- Wyrażenia przypisania nazwanego
- Reguły dotyczące nazw zmiennych
- Instrukcje wyrażeń
- Instrukcje wyrażeń i modyfikacje w miejscu
- Polecenia print
- Funkcja print
- Przekierowanie strumienia wyjściowego
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Instrukcje przypisania
- 12. Testy if i reguły składni
- Instrukcje if
- Ogólny format
- Proste przykłady
- Instrukcja wielokrotnego wyboru
- Instrukcje match
- Podstawowe użycie match
- Zaawansowane użycie match
- Reguły składni Pythona raz jeszcze
- Ograniczniki bloków - reguły tworzenia wcięć
- Ograniczniki instrukcji - wiersze i znaki kontynuacji
- Kilka przypadków specjalnych
- Testy prawdziwości i testy logiczne
- Wyrażenie trójargumentowe if/else
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Instrukcje if
- 13. Pętle while i for
- Pętle while
- Ogólny format
- Przykłady
- Instrukcje break, continue, pass oraz else w pętli
- Ogólny format pętli
- Instrukcja pass
- Instrukcja continue
- Instrukcja break
- Klauzula else pętli
- Pętle for
- Ogólny format
- Przykłady
- Techniki tworzenia pętli
- Pętle z licznikami - range
- Skanowanie sekwencji - while, range, for
- Przetasowania sekwencji - funkcje range i len
- Przechodzenie niewyczerpujące - range kontra wycinki
- Modyfikowanie list - range kontra listy składane
- Przechodzenie równoległe - zip
- Generowanie wartości przesunięcia i elementów - enumerate
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Pętle while
- 14. Iteracje i listy składane
- Iteracje
- Protokół iteracyjny
- Wbudowane funkcje iter i next
- Inne wbudowane typy iterowalne
- Listy składane
- Podstawy list składanych
- Wykorzystywanie list składanych w plikach
- Rozszerzona składnia list składanych
- Listy składane - zawieszenie tematu
- Narzędzia iteracyjne
- Inne zagadnienia związane z iteracjami
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Iteracje
- 15. Wprowadzenie do dokumentacji
- Źródła dokumentacji Pythona
- Komentarze ze znakami #
- Funkcja dir
- Notki dokumentacyjne - __doc__
- PyDoc - funkcja help
- PyDoc - raporty HTML
- Nie tylko notki docstrings - pakiet Sphinx
- Zbiór standardowej dokumentacji
- Zasoby internetowe
- Często spotykane problemy programistyczne
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Ćwiczenia do części III
- Źródła dokumentacji Pythona
Część IV. Funkcje i generatory
- 16. Podstawy funkcji
- Dlaczego używamy funkcji?
- Tworzenie funkcji
- Podstawowe narzędzia funkcji
- Zaawansowane narzędzia funkcji
- Ogólne koncepcje związane z funkcjami
- Instrukcje def
- Instrukcje return
- Instrukcja def uruchamiana jest w czasie wykonywania
- Wyrażenie lambda tworzy funkcje anonimowe
- Pierwszy przykład: definicje i wywoływanie
- Definicja
- Wywołanie
- Polimorfizm w Pythonie
- Drugi przykład: przecinające się sekwencje
- Definicja
- Wywołania
- Raz jeszcze o polimorfizmie
- Zmienne lokalne
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- 17. Zasięgi
- Podstawy zasięgów w Pythonie
- Reguły dotyczące zasięgów
- Rozwiązywanie nazw - reguła LEGB
- Przykład zasięgu
- Zasięg wbudowany
- Instrukcja global
- Projektowanie programów: minimalizowanie stosowania zmiennych globalnych
- Projektowanie programów: minimalizacja modyfikacji dokonywanych pomiędzy plikami
- Inne metody dostępu do zmiennych globalnych
- Zasięgi a funkcje zagnieżdżone
- Szczegóły dotyczące zasięgów zagnieżdżonych
- Przykłady zasięgów zagnieżdżonych
- Funkcje fabrykujące: domknięcia
- Instrukcja nonlocal
- Podstawy instrukcji nonlocal
- Instrukcja nonlocal w akcji
- Przypadki graniczne
- Opcje zachowania stanu
- Zmienne nonlocal - modyfikowalne, na wywołanie, LEGB
- Zmienne globalne - modyfikowalne, ale współdzielone
- Atrybuty funkcji - modyfikowalne, na wywołanie, jawne
- Klasy - modyfikowalne, na wywołanie, programowanie zorientowane obiektowo
- A zwycięzcą jest.
- Zakresy i domyślne wartości argumentów
- Pętle wymagają wartości domyślnych, nie zasięgów
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Podstawy zasięgów w Pythonie
- 18. Argumenty
- Podstawy przekazywania argumentów
- Argumenty a współdzielone referencje
- Unikanie modyfikacji argumentów mutowalnych
- Symulowanie parametrów wyjścia i wielu wyników działania
- Specjalne tryby dopasowywania argumentów
- Podstawy dopasowywania argumentów
- Składnia dopasowania argumentów
- Dopasowywanie argumentów - szczegóły
- Przykłady ze słowami kluczowymi i wartościami domyślnymi
- Przykłady dowolnych argumentów
- Argumenty tylko ze słowami kluczowymi
- Argumenty tylko pozycyjne
- Kolejność argumentów - szczegóły techniczne
- Kolejność w definicji funkcji
- Kolejność wywoływania
- Przykład z funkcją obliczającą minimum
- Pełne rozwiązanie
- Bonus
- Puenta
- Przykład z uogólnionymi funkcjami działającymi na zbiorach
- Testowanie kodu
- Przykład z utworzeniem własnej funkcji print
- Wykorzystywanie argumentów ze słowami kluczowymi
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Podstawy przekazywania argumentów
- 19. Zaawansowane zagadnienia dotyczące funkcji
- Koncepcje projektowania funkcji
- Funkcje rekurencyjne
- Sumowanie z użyciem rekurencji
- Implementacje alternatywne
- Pętle a rekurencja
- Obsługa dowolnych struktur
- Obiekty funkcji - atrybuty, adnotacje i tym podobne
- Obiekty "pierwszej klasy"
- Introspekcja funkcji
- Atrybuty funkcji
- Adnotacje funkcji i dekoratory
- Funkcje anonimowe - lambda
- Podstawy wyrażeń lambda
- Po co używamy wyrażeń lambda?
- Jak (nie) zaciemniać kodu napisanego w Pythonie?
- Zasięgi: wyrażenia lambda również można zagnieżdżać
- Narzędzia programowania funkcyjnego
- Odwzorowywanie funkcji na obiekty iterowalne - map
- Wybieranie elementów obiektów iterowalnych - funkcja filter
- Łączenie elementów obiektów iterowalnych - funkcja reduce
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- 20. Listy składane i generatory
- Listy składane - akt końcowy
- Powtórka z list składanych
- Przykład: listy składane i macierze
- Funkcje i wyrażenia generatorów
- Funkcje generatorów - yield kontra return
- Wyrażenia generatorów - obiekty iterowalne spotykają złożenia
- Różne ciekawostki dotyczące generatorów
- Przykład: generowanie mieszanych sekwencji
- Sekwencje mieszające
- Permutacje: wszystkie możliwe kombinacje
- Przykład: emulowanie funkcji zip i map
- Tworzymy własną implementację funkcji map
- Własna wersja funkcji zip i map z Pythona 2.X
- Funkcje asynchroniczne - krótka historia
- Podstawy funkcji asynchronicznych
- Podsumowanie funkcji asynchronicznych
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Listy składane - akt końcowy
- 21. Wprowadzenie do pomiarów wydajności
- Pomiary wydajności domowymi sposobami
- Moduł pomiaru czasu - ujęcie pierwsze
- Moduł pomiaru czasu - ujęcie drugie
- Skrypt mierzący wydajność
- Wyniki pomiarów czasu iteracji
- Inne rozwiązania dla modułu do pomiaru czasu
- Mierzenie czasu iteracji z wykorzystaniem modułu timeit
- Podstawowe reguły korzystania z modułu timeit
- Automatyczne testy wydajnościowe z użyciem modułu timeit
- Pułapki związane z funkcjami
- Lokalne nazwy są wykrywane w sposób statyczny
- Wartości domyślne i obiekty mutowalne
- Funkcje, które nie zwracają wyników
- Różne problemy związane z funkcjami
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Sprawdź swoją wiedzę - ćwiczenia do części IV
- Pomiary wydajności domowymi sposobami
Część V. Moduły i pakiety
- 22. Moduły - wprowadzenie
- Moduły - podstawy
- Dlaczego używamy modułów?
- Architektura programu w Pythonie
- Struktura programu
- Importowanie i atrybuty
- Moduły biblioteki standardowej
- Jak działa importowanie?
- 1. Odszukanie modułu
- 2. Kompilowanie (o ile jest to potrzebne)
- 3. Wykonanie
- Ścieżka wyszukiwania modułów
- Elementy ścieżki wyszukiwania
- Konfigurowanie ścieżki wyszukiwania
- Lista sys.path
- Wybór pliku modułu
- Nietypowe ścieżki - pliki samodzielne i pakiety
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- 23. Podstawy tworzenia modułów
- Tworzenie modułów
- Nazwy modułów
- Inne rodzaje modułów
- Używanie modułów
- Instrukcja import
- Instrukcja from
- Instrukcja from *
- Operacja importowania jest przeprowadzana tylko raz
- Instrukcje import są przypisaniami
- Równoważność instrukcji import oraz from
- Potencjalne pułapki związane z użyciem instrukcji from
- Przestrzenie nazw modułów
- Pliki generują przestrzenie nazw
- Słowniki przestrzeni nazw: __dict__
- Kwalifikowanie nazw atrybutów
- Importowanie a zasięgi
- Zagnieżdżanie przestrzeni nazw
- Przeładowywanie modułów
- Podstawy przeładowywania modułów
- Przykład przeładowywania z użyciem reload
- Różne aspekty przeładowywania
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Tworzenie modułów
- 24. Pakiety modułów
- Stosowanie pakietów
- Podstawy importowania pakietów
- Pakiety a ustawienia ścieżki wyszukiwania
- Tworzenie pakietów
- Podstawowa struktura pakietów
- Pliki __init__.py
- Pliki __main__.py
- Do czego służą pakiety?
- Historia dwóch systemów
- Role pliku inicjalizacji pakietu
- Względne importowanie pakietów
- Względne i bezwzględne importowanie pakietów
- Importowanie względne - za i przeciw
- Importy względne w działaniu
- Pakiety przestrzeni nazw
- Modele importowania w Pythonie
- Uzasadnienie dla pakietów przestrzeni nazw
- Algorytm wyszukiwania modułu
- Pakiety przestrzeni nazw w akcji
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Stosowanie pakietów
- 25. Zaawansowane zagadnienia związane z modułami
- Koncepcje związane z projektowaniem modułów
- Ukrywanie danych w modułach
- Minimalizacja niebezpieczeństw użycia from * - _X oraz __all__
- Zarządzanie dostępem do atrybutów - __getattr__ i __dir__
- Włączanie opcji z przyszłych wersji Pythona: __future__
- Mieszane tryby użycia - __name__ i __main__
- Przykład: testy jednostkowe z wykorzystaniem atrybutu __name__
- Rozszerzenie as dla instrukcji import oraz from
- Introspekcja modułów
- Przykład: wyświetlanie modułów za pomocą __dict__
- Importowanie modułów z użyciem nazwy w postaci ciągu znaków
- Uruchamianie ciągów znaków zawierających kod
- Bezpośrednie wywołania: dwie opcje
- Przykład: przechodnie przeładowywanie modułów
- Pułapki związane z modułami
- Kolizje nazw modułów: pakiety i importowanie względne w pakietach
- W kodzie najwyższego poziomu kolejność instrukcji ma znaczenie
- Instrukcja from kopiuje nazwy, jednak łącza już nie
- Instrukcja from * może zaciemnić znaczenie zmiennych
- Funkcja reload może nie mieć wpływu na obiekty importowane za pomocą from
- Funkcja reload i instrukcja from a testowanie interaktywne
- Rekurencyjne importowanie za pomocą from może nie działać
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Sprawdź swoją wiedzę - ćwiczenia do części V
Część VI. Klasy i programowanie zorientowane obiektowo
- 26. Programowanie zorientowane obiektowo - wprowadzenie
- Po co używa się klas?
- Programowanie zorientowane obiektowo z dystansu
- Wyszukiwanie atrybutów dziedziczonych
- Klasy a instancje
- Wywołania metod klasy
- Tworzenie drzew klas
- Przeciążanie operatorów
- Programowanie zorientowane obiektowo oparte jest na ponownym wykorzystaniu kodu
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- 27. Podstawy tworzenia klas
- Klasy generują wiele obiektów instancji
- Obiekty klas udostępniają zachowania domyślne
- Obiekty instancji są rzeczywistymi elementami
- Pierwszy przykład
- Klasy dostosowujemy do własnych potrzeb przez dziedziczenie
- Drugi przykład
- Klasy są atrybutami w modułach
- Klasy mogą przechwytywać operatory Pythona
- Trzeci przykład
- Najprostsza klasa Pythona na świecie
- Klasy od kuchni
- Jeszcze kilka słów o rekordach: klasy kontra słowniki
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Klasy generują wiele obiektów instancji
- 28. Bardziej realistyczny przykład
- Krok 1. - tworzenie instancji
- Tworzenie konstruktorów
- Testowanie w miarę pracy
- Wykorzystywanie kodu na dwa sposoby
- Krok 2. - dodawanie metod
- Tworzenie kodu metod
- Krok 3. - przeciążanie operatorów
- Udostępnienie sposobów wyświetlania
- Krok 4. - dostosowywanie zachowania za pomocą klas podrzędnych
- Tworzenie klas podrzędnych
- Rozszerzanie metod - niepoprawny sposób
- Rozszerzanie metod - poprawny sposób
- Polimorfizm w akcji
- Dziedziczenie, dostosowanie do własnych potrzeb i rozszerzenie
- Programowanie zorientowane obiektowo - idea
- Krok 5. - dostosowanie do własnych potrzeb także konstruktorów
- Programowanie zorientowane obiektowo jest prostsze, niż się wydaje
- Inne sposoby łączenia klas
- Krok 6. - wykorzystywanie narzędzi do introspekcji
- Specjalne atrybuty klas
- Uniwersalne narzędzie do wyświetlania
- Atrybuty instancji a atrybuty klas
- Nazwy w klasach narzędziowych
- Ostateczna postać naszych klas
- Krok 7. i ostatni - przechowanie obiektów w bazie danych
- Obiekty pickle i shelve
- Przechowywanie obiektów w bazie danych za pomocą shelve
- Interaktywna eksploracja obiektów shelve
- Uaktualnianie obiektów w pliku shelve
- Przyszłe kierunki rozwoju
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Krok 1. - tworzenie instancji
- 29. Szczegóły kodowania klas
- Instrukcja class
- Ogólna forma
- Przykład: atrybuty klasy
- Metody
- Przykład metody
- Inne możliwości wywoływania metod
- Dziedziczenie
- Tworzenie drzewa atrybutów
- Szczegóły dziedziczenia
- Specjalizacja odziedziczonych metod
- Techniki interfejsów klas
- Abstrakcyjne klasy nadrzędne
- Przestrzenie nazw - cała historia
- Proste nazwy - globalne, o ile nie są przypisane
- Nazwy atrybutów - przestrzenie nazw obiektów
- Zen przestrzeni nazw Pythona - przypisania klasyfikują zmienne
- Klasy zagnieżdżone - jeszcze kilka słów o regule LEGB
- Słowniki przestrzeni nazw - przegląd
- Łącza przestrzeni nazw - przechodzenie w górę drzewa klas
- Raz jeszcze o notkach dokumentacyjnych
- Klasy a moduły
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Instrukcja class
- 30. Przeciążanie operatorów
- Podstawy
- Konstruktory i wyrażenia - __init__ i __sub__
- Często spotykane metody przeciążania operatorów
- Indeksowanie i wycinanie - __getitem__ i __setitem__
- Wycinki
- Przechwytywanie przypisań elementu
- Metoda __index__ nie służy do indeksowania!
- Iteracja po indeksie - __getitem__
- Obiekty iteratorów - __iter__ i __next__
- Iteratory zdefiniowane przez użytkownika
- Wiele iteracji po jednym obiekcie
- Alternatywa: metoda__iter__ i instrukcja yield
- Test przynależności - __contains__, __iter__ i __getitem__
- Dostęp do atrybutów - __getattr__ i __setattr__
- Odwołania do atrybutów
- Przypisywanie wartości i usuwanie atrybutów
- Inne narzędzia do zarządzania atrybutami
- Emulowanie prywatności w atrybutach instancji
- Reprezentacje łańcuchów - __repr__ i __str__
- Po co nam dwie metody wyświetlania?
- Uwagi dotyczące wyświetlania
- Dodawanie prawostronne i miejscowa modyfikacja: metody __radd__ i __iadd__
- Dodawanie prawostronne
- Dodawanie w miejscu
- Wywołania - __call__
- Interfejsy funkcji i kod oparty na wywołaniach zwrotnych
- Porównania - __lt__, __gt__ i inne
- Testy logiczne - __bool__ i __len__
- Destrukcja obiektu - __del__
- Uwagi dotyczące stosowania destruktorów
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Podstawy
- 31. Projektowanie z użyciem klas
- Python a programowanie zorientowane obiektowo
- Polimorfizm to interfejsy, a nie sygnatury wywołań
- Programowanie zorientowane obiektowo i dziedziczenie - związek "jest"
- Programowanie zorientowane obiektowo i kompozycja - związki typu "ma"
- Raz jeszcze procesor strumienia danych
- Programowanie zorientowane obiektowo a delegacja - obiekty "opakowujące"
- Pseudoprywatne atrybuty klas
- Przegląd zniekształcania nazw zmiennych
- Po co używa się atrybutów pseudoprywatnych?
- Metody są obiektami - z wiązaniem i bez wiązania
- Metody związane w akcji
- Klasy są obiektami - uniwersalne fabryki obiektów
- Do czego służą fabryki?
- Dziedziczenie wielokrotne i MRO
- Jak działa dziedziczenie wielokrotne?
- Jak działa MRO?
- Rozwiązywanie konfliktów atrybutów
- Przykład: listowanie atrybutów klas mieszanych
- Przykład: wyświetlanie atrybutów ze źródłem dziedziczenia
- Inne zagadnienia związane z projektowaniem
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Python a programowanie zorientowane obiektowo
- 32. Zaawansowane zagadnienia związane z klasami
- Rozszerzanie typów wbudowanych
- Rozszerzanie typów za pomocą osadzania
- Rozszerzanie typów za pomocą klas podrzędnych
- Model obiektowy Pythona
- Klasy są typami, a typy są klasami
- Niektóre instancje są równiejsze od innych
- Rozgałęzienie dziedziczenia
- Różnica między metaklasą a klasą
- I jeden object rządzi wszystkim
- Zaawansowane narzędzia do obsługi atrybutów
- Sloty: deklaracje atrybutów
- Właściwości klas: dostęp do atrybutów
- Implementacje atrybutów: __getattribute__ i deskryptory
- Metody statyczne oraz metody klasy
- Do czego potrzebujemy metod specjalnych?
- Metody statyczne
- Alternatywy dla metod statycznych
- Używanie metod statycznych i metod klas
- Zliczanie instancji z użyciem metod statycznych
- Zliczanie instancji z metodami klas
- Dekoratory i metaklasy
- Podstawowe informacje o dekoratorach funkcji
- Pierwsze spojrzenie na funkcję dekoratora zdefiniowaną przez użytkownika
- Pierwsze spojrzenie na dekoratory klas i metaklasy
- Dalsza lektura
- Funkcja super
- Podstawy funkcji super
- Szczegóły dotyczące funkcji super
- Posumowanie funkcji super
- Pułapki związane z klasami
- Modyfikacja atrybutów klas może mieć efekty uboczne
- Modyfikowanie mutowalnych atrybutów klas również może mieć efekty uboczne
- Dziedziczenie wielokrotne - kolejność ma znaczenie
- Zakresy w metodach i klasach
- Różne pułapki związane z klasami
- Przesadne opakowywanie
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Sprawdź swoją wiedzę - ćwiczenia do części VI
- Rozszerzanie typów wbudowanych
Część VII. Wyjątki
- 33. Podstawy wyjątków
- Po co używa się wyjątków?
- Role wyjątków
- Wyjątki w skrócie
- Domyślny program obsługi wyjątków
- Przechwytywanie wyjątków
- Zgłaszanie wyjątków
- Wyjątki zdefiniowane przez użytkownika
- Działania końcowe
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Po co używa się wyjątków?
- 34. Szczegółowe informacje dotyczące wyjątków
- Instrukcja try
- Klauzule instrukcji try
- Klauzule except i else
- Klauzula finally
- Połączone klauzule instrukcji try
- Instrukcja raise
- Zgłaszanie wyjątków
- Klauzula except jako punkt zaczepienia
- Zakresy widoczności zmiennych i except as
- Przekazywanie wyjątków za pomocą raise
- Łańcuchy wyjątków - raise from
- Instrukcja assert
- Przykład: wychwytywanie ograniczeń (ale nie błędów!)
- Instrukcja with i menedżery kontekstu
- Podstawowe zastosowanie with
- Protokół zarządzania kontekstem
- Kilka menedżerów kontekstu
- Obsługa zakończenia
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Instrukcja try
- 35. Obiekty wyjątków
- Klasy wyjątków
- Tworzenie klas wyjątków
- Do czego służą hierarchie wyjątków?
- Wbudowane klasy wyjątków
- Kategorie wbudowanych wyjątków
- Domyślne wyświetlanie oraz stan
- Własne sposoby wyświetlania
- Własne dane oraz zachowania
- Udostępnianie szczegółów wyjątku
- Udostępnianie metod wyjątków
- Grupy wyjątków - kolejna gwiazda!
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Klasy wyjątków
- 36. Projektowanie z wykorzystaniem wyjątków
- Zagnieżdżanie programów obsługi wyjątków
- Przykład: zagnieżdżanie przebiegu sterowania
- Przykład: zagnieżdżanie składniowe
- Zastosowanie wyjątków
- Wychodzenie z głęboko zagnieżdżonych pętli: instrukcja go to
- Wyjątki nie zawsze są błędami
- Funkcje mogą sygnalizować warunki za pomocą raise
- Zamykanie plików oraz połączeń z serwerem
- Debugowanie z wykorzystaniem zewnętrznych instrukcji try
- Testowanie kodu wewnątrz tego samego procesu
- Więcej informacji na temat funkcji sys.exc_info
- Wyświetlanie błędów i śladów stosu
- Wskazówki i pułapki dotyczące projektowania wyjątków
- Co powinniśmy opakować w try?
- Jak nie przechwytywać zbyt wiele - unikanie pustych except i wyjątków
- Jak nie przechwytywać zbyt mało - korzystanie z kategorii opartych na klasach
- Podsumowanie podstaw języka Python
- Zbiór narzędzi Pythona
- Narzędzia programistyczne przeznaczone do większych projektów
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Sprawdź swoją wiedzę - ćwiczenia do części VII
- Zagnieżdżanie programów obsługi wyjątków
Część VIII. Zagadnienia zaawansowane
- 37. Łańcuchy znaków Unicode oraz łańcuchy bajtowe
- Podstawy Unicode
- Kodowanie znaków
- Kodowanie znaków
- Wprowadzenie do narzędzi łańcuchów znaków w Pythonie
- Obiekt str
- Obiekt bytes
- Obiekt bytearray
- Pliki binarne i tekstowe
- Wykorzystanie ciągów znaków
- Literały tekstowe i podstawowe właściwości
- Konwersje typów ciągów
- Kodowanie łańcuchów znaków Unicode w Pythonie
- Deklaracje typu kodowania znaków pliku źródłowego
- Wykorzystywanie łańcuchów bajtowych
- Wywołania metod
- Operacje na sekwencjach
- Formatowanie
- Inne sposoby tworzenia obiektów bytes
- Mieszanie typów łańcuchów znaków
- Obiekt bytearray
- Wykorzystywanie plików tekstowych i binarnych
- Podstawy plików tekstowych
- Tryby tekstowy i binarny
- Pliki tekstowe Unicode
- Unicode, obiekt bytes i inne narzędzia łańcuchów znaków
- Moduł dopasowywania wzorców re
- Moduł danych binarnych struct
- Moduł serializacji obiektów pickle i json
- Nazwy plików w funkcji open i inne narzędzia dla nazw plików
- Zmierz Unicode
- Obsługa BOM w Pythonie
- Normalizacja Unicode - dokąd zmierza ten standard?
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Podstawy Unicode
- 38. Zarządzane atrybuty
- 39. Dekoratory
- 40. Metaklasy i dziedziczenie
- Tworzyć metaklasy czy tego nie robić?
- Wady funkcji pomocniczych
- Metaklasy a dekoratory klas - runda 1.
- Model metaklasy
- Klasy są instancjami obiektu type
- Metaklasy są klasami podrzędnymi klasy type
- Instrukcje class wywołują typ
- Instrukcje class mogą wybierać typ
- Protokół metod metaklas
- Tworzenie metaklas
- Prosta metaklasa
- Dostosowywanie tworzenia do własnych potrzeb oraz inicjalizacja
- Pozostałe sposoby tworzenia metaklas
- Zarządzanie klasami za pomocą metaklas i dekoratorów
- Dziedziczenie - finał
- Metaklasy a klasy nadrzędne
- Dziedziczenie metaklas
- Algorytm dziedziczenia Pythona - prosta wersja
- Algorytm dziedziczenia w Pythonie - trudniejsza wersja
- Podsumowanie dziedziczenia
- Metody metaklas
- Metody metaklasy a metody klasy
- Przeciążanie operatorów w metodach metaklasy
- Metody metaklas a metody instancji
- Podsumowanie rozdziału
- Sprawdź swoją wiedzę - quiz
- Sprawdź swoją wiedzę - odpowiedzi
- Tworzyć metaklasy czy tego nie robić?
- 41. Wszystko, co najlepsze
- Fala zmian w Pythonie
- Piaskownica Pythona
- Zalety Pythona
- Końcowe wnioski
- Dokąd dalej?
- Na bis: wydrukuj swój certyfikat!
Dodatki
- A. Wskazówki dotyczące użytkowania platformy
- Korzystanie z Pythona w systemie Windows
- Korzystanie z Pythona w systemie macOS
- Korzystanie z Pythona w systemie Linux
- Korzystanie z Pythona w systemie Android
- Świat u stóp Androida
- Korzystanie z Pythona w systemie iOS
- Samodzielne programy i pliki wykonywalne
- I tak dalej
- B. Rozwiązania ćwiczeń podsumowujących poszczególne części książki
- Część I. Wprowadzenie
- Część II. Typy i operacje
- Część III. Instrukcja i składnia
- Część IV. Funkcje i generatory
- Część V. Moduły i pakiety
- Część VI. Klasy i programowanie zorientowane obiektowo
- Część VII. Wyjątki
Skorowidz
- O autorze
- Kolofon





