Python. Wprowadzenie. Wydanie VI Kraków
Nic dziwnego, że programiści kochają Pythona: jest wszechstronny, czytelny, darmowy i działa na każdej platformie. Można się go stosunkowo szybko nauczyć ... ale jest jeden warunek: aby w pełni wykorzystać jego możliwości, trzeba zdobyć solidne podstawy, zrozumieć kilka trudniejszych koncepcji i... …
Liczba ofert: 1
Oferta sklepu
Opis
Nic dziwnego, że programiści kochają Pythona: jest wszechstronny, czytelny, darmowy i działa na każdej platformie. Można się go stosunkowo szybko nauczyć ... ale jest jeden warunek: aby w pełni wykorzystać jego możliwości, trzeba zdobyć solidne podstawy, zrozumieć kilka trudniejszych koncepcji i... dużo ćwiczyć, pisząc własny kod. Ta książka stanowi kompleksowe i obszerne wprowadzenie do języka Python. Pomoże Ci opanować jego podstawy i przygotuje do praktycznego zastosowania nabytej wiedzy. To wydanie zostało zaktualizowane i rozszerzone, aby odzwierciedlić zmiany zachodzące w świecie Pythona. Pominięto omówienie nieaktualnej wersji 2.X,opisano nowe narzędzia, dodane do Pythona w wersji 3.12, a także innych jego edycji, które są dziś szeroko używane. Naukę ułatwią Ci liczne quizy, ćwiczenia, pomocne ilustracje i przykładowe fragmenty kodu. To idealne kompendium dla każdego, kto chce szybko zacząć programować w Pythonie i tworzyć wydajny kod wysokiej jakości. W książce: ogólny model składni Pythona wbudowane typy obiektów i ich przetwarzanie stosowanie funkcji i organizowanie kodu w modułach i pakietach obsługa wyjątków i inne narzędzia programistyczne zaawansowane narzędzia Pythona, między innymi dekoratory, deskryptory i metaklasy kod idiomatyczny, który działa na różnych platformach Daj się opleść Pythonowi - i wejdź do świata kodu ! 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 O autorze: Mark Lutz — to znany na całym świecie instruktor Pythona, autor najwcześniejszych oraz najlepiej sprzedających się tekstów poświęconych temu językowi i jedna z najważniejszych postaci w środowisku Pythona. Poza poprzednimi wydaniami tej książki — w tym przetłumaczonej na język polski wersji „Python. Wprowadzenie” (Helion, 2002), napisał także „Programming Python” oraz „Python Pocket Reference”. Osobiście używa języka Python i promuje go od 1992 roku. Książki na temat tego języka zaczął publikować w 1995 roku, zaś szkolenia z Pythona prowadzi od 1997 roku. Do początku roku 2008 przeprowadził ponad dwieście sesji treningowych poświęconych temu językowi.
Specyfikacja
Podstawowe informacje
| Autor |
|
| Wybrani autorzy |
|
| Wybrane wydawnictwa |
|
| Okładka |
|
| Rok wydania |
|
| Tematyka |
|
| ISBN |
|