Python. Wprowadzenie. Wydanie IV
- Wydawnictwo:
- Helion
- Ocena:
- 4.6/6 Opinie: 74
- Stron:
- 1184
- Druk:
- oprawa twarda
- Dostępne formaty:
-
PDFePubMobi
Sprawdź nowe wydanie
Python. Wprowadzenie. Wydanie V
Mark Lutz
Opis książki: Python. Wprowadzenie. Wydanie IV
Poznaj język, który wykorzystuje Google i YouTube!
- Jak tworzyć i przetwarzać obiekty za pomocą instrukcji Pythona?
- Jak stworzyć strukturę kodu i wykorzystać go ponownie?
- Jak programować obiektowo w Pythonie?
Czy wiesz, dlaczego ponad milion programistów na całym świecie używa właśnie tego języka skryptowego? Jego atuty to niezwykła czytelność, spójność i wydajność — pewnie dlatego także i Ty chcesz opanować słynnego Pythona. Kod napisany w tym języku można z łatwością utrzymywać, przenosić i używać go ponownie. Pozostaje on zrozumiały nawet wówczas, jeśli analizuje go ktoś, kto nie jest jego autorem. Co więcej, taki kod ma rozmiary średnio o dwie trzecie do czterech piątych mniejsze od kodu w językach C++ czy Java, co wielokrotnie zwiększa wydajność pracy używających go programistów. Python obsługuje także zaawansowane mechanizmy pozwalające na ponowne wykorzystanie kodu, takie jak programowanie zorientowane obiektowo, a programy w nim napisane działają natychmiast, bez konieczności przeprowadzania długiej kompilacji, niezależnie od wykorzystywanej platformy. Jeśli jesteś gotowy na opanowanie tego potężnego języka, mamy doskonały podręcznik dla Ciebie.
Mark Lutz, autor tego podręcznika, jest kultową postacią w środowisku Pythona i znanym na całym świecie instruktorem tego języka, a struktura jego książki powstała w oparciu o słynny, prowadzony przez niego kurs. Naukę rozpoczniesz od najważniejszych wbudowanych typów danych — liczb, list czy słowników. Przyjrzysz się również typom dynamicznym oraz ich interfejsom. Później poznasz instrukcje oraz ogólny model składni Pythona. Poszerzysz wiedzę na temat powiązanych z nim narzędzi, takich jak system PyDoc, a także alternatywnych możliwości tworzenia kodu. Dowiesz się wszystkiego na temat modułów: jak się je tworzy, przeładowuje i jak się ich używa. W końcu poznasz klasy oraz zagadnienia związane z programowaniem zorientowanym obiektowo i nauczysz się obsługiwać wyjątki. Czwarte wydanie tej książki zostało wzbogacone o wiele nowych, ciekawych i bardzo zaawansowanych zagadnień, dzięki czemu stanowi doskonałą lekturę także dla zawodowców, na co dzień piszących kod w tym języku.
Dzięki tej książce:- zapoznasz się z podstawowymi typami wbudowanymi Pythona, takimi jak liczby, listy oraz słowniki
- nauczysz się tworzyć i przetwarzać obiekty za pomocą instrukcji Pythona, a także opanujesz ogólny model składni tego języka
- stworzysz strukturę kodu i wykorzystasz kod ponownie dzięki podstawowym narzędziom proceduralnym Pythona
- dowiesz się wszystkiego o modułach Pythona — pakietach instrukcji i funkcji oraz innych narzędziach zorganizowanych w większe komponenty
- odkryjesz narzędzie programowania zorientowanego obiektowo, umożliwiające strukturyzację kodu
- opanujesz model obsługi wyjątków i narzędzia programistyczne służące do pisania większych programów
- zapoznasz się z zaawansowanymi narzędziami Pythona, w tym dekoratorami, deskryptorami, metaklasami i przetwarzaniem tekstu Unicode
Opanuj Pythona z Markiem Lutzem
— najbardziej znanym ekspertem w tej dziedzinie!
Wybrane bestsellery
-
Skoro sięgasz po tę książkę, pewnie chcesz się uczyć programowania. To świetnie! Ta umiejętność z pewnością Ci się przyda ― choćby do tego, by już dziś znakomicie się bawić „w towarzystwie” komputera, ale też jako inwestycja w przyszłość, podjęta z myślą o studiach i pracy.
Zacznij od Pythona. Programowanie dla młodzieży w praktyce Zacznij od Pythona. Programowanie dla młodzieży w praktyce
(0,00 zł najniższa cena z 30 dni)23.68 zł
37.00 zł(-36%) -
Pierwsza odpowiedź, jaka się nasuwa, jest dość oczywista: ponieważ Python to jeden z najprostszych do nauki języków programowania. Najkrótszy program zajmuje tylko JEDNĄ linijkę. Z małą pomocą nauczyciela i naszego praktycznego zeszytu ćwiczeń każdy młody adept sztuki programowania zdoła szybko o...
Zacznij od Pythona. Pierwsze kroki w programowaniu Zacznij od Pythona. Pierwsze kroki w programowaniu
(0,00 zł najniższa cena z 30 dni)24.74 zł
39.90 zł(-38%) -
Oto przyjazny przewodnik dla programistów Pythona, wyczerpująco wyjaśniający wiele zagadnień programowania obiektowego, takich jak dziedziczenie, kompozycja, polimorfizm, tworzenie klas i struktur danych. W książce szczegółowo omówiono zagadnienia obsługi wyjątków, testowania kodu i zastosowania ...
Programowanie zorientowane obiektowo w Pythonie. Tworzenie solidnych i łatwych w utrzymaniu aplikacji i bibliotek. Wydanie IV Programowanie zorientowane obiektowo w Pythonie. Tworzenie solidnych i łatwych w utrzymaniu aplikacji i bibliotek. Wydanie IV
(0,00 zł najniższa cena z 30 dni)95.36 zł
149.00 zł(-36%) -
To drugie, zaktualizowane i poprawione wydanie bestsellerowego podręcznika Programowania w Pythonie pozwoli Ci błyskawicznie zacząć tworzyć kod, który działa! Zaczniesz od zrozumienia podstawowych koncepcji programistycznych, następnie nauczysz się zapewniać programom interaktywność i wykształcis...(0,00 zł najniższa cena z 30 dni)
51.48 zł
99.00 zł(-48%) -
Nauka programowania na dobre zadomowiła się w szkołach, a umiejętności informatyczne są od lat sprawdzane na egzaminach maturalnych. Jej adepci zapewne zdają sobie sprawę, jakim wzięciem na rynku cieszą się osoby, które mogą się pochwalić znajomością Pythona. To język, który dzięki swoim możliwoś...
Python na maturze. Rozwiązania i analiza wybranych zadań programistycznych Python na maturze. Rozwiązania i analiza wybranych zadań programistycznych
(0,00 zł najniższa cena z 30 dni)21.64 zł
34.90 zł(-38%) -
Python jest językiem, którego powszechnie używa się w wielu obszarach: od programowania gier, przez aplikacje webowe, po systemy analizy danych. Nic więc dziwnego, że cieszy się ogromną popularnością i jest dodatkowo wspierany przez liczną społeczność programistów, projektantów i sympatyków, któr...(0,00 zł najniższa cena z 30 dni)
31.36 zł
49.00 zł(-36%) -
Python to bardzo popularny, wydajny i elastyczny język programowania ogólnego przeznaczenia, którego prosta, czytelna i zwięzła składnia zdobyła uznanie rzesz programistów na całym świecie. Duże możliwości, przenośność kodu, możliwość pisania skryptów - wszystko to sprawia, że Python znajduje zas...
Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy
(0,00 zł najniższa cena z 30 dni)35.40 zł
59.00 zł(-40%) -
To drugie wydanie bestsellerowego przewodnika po technikach uczenia maszynowego. Wystarczą minimalne umiejętności programistyczne, aby dzięki tej książce nauczyć się budowania i trenowania głębokiej sieci neuronowej. Zawarto tu minimum teorii, a proces nauki jest ułatwiony przez liczne przykłady ...
Uczenie maszynowe z użyciem Scikit-Learn i TensorFlow. Wydanie II Uczenie maszynowe z użyciem Scikit-Learn i TensorFlow. Wydanie II
(0,00 zł najniższa cena z 30 dni)79.98 zł
129.00 zł(-38%) -
Metody statystyczne są kluczowym elementem data science, mimo to niewielu specjalistów data science posiada formalne wykształcenie statystyczne. Kursy i podręczniki o podstawach statystyki, rzadko kiedy omawiają temat z perspektywy data science. W drugim wydaniu tego popularnego podręcznika zosta...
Statystyka praktyczna w data science. 50 kluczowych zagadnień w językach R i Python. Wydanie II Statystyka praktyczna w data science. 50 kluczowych zagadnień w językach R i Python. Wydanie II
(0,00 zł najniższa cena z 30 dni)42.78 zł
69.00 zł(-38%) -
W tym przewodniku opisano zagadnienia związane z podstawami nauki o danych. Wyjaśniono niezbędne elementy matematyki i statystyki. Przedstawiono także techniki budowy potrzebnych narzędzi i sposoby działania najistotniejszych algorytmów. Książka została skonstruowana tak, aby poszczególne impleme...
Data science od podstaw. Analiza danych w Pythonie. Wydanie II Data science od podstaw. Analiza danych w Pythonie. Wydanie II
(0,00 zł najniższa cena z 30 dni)48.98 zł
79.00 zł(-38%)
O autorze książki
1 Mark LutzMark Lutz od 30 lat zajmuje się programowaniem. Dziś jest jedną z najważniejszych postaci w świecie Pythona. Napisał kilka popularnych, wielokrotnie wznawianych książek o programowaniu w tym języku. Przeprowadził też kilkaset sesji treningowych poświęconych Pythonowi. Zanim w 1992 roku zainteresował się tym językiem, zajmował się implementacją Prologa i pracował nad kompilatorami, narzędziami programistycznymi, aplikacjami skryptowymi oraz systemami klient-serwer.
Mark Lutz - pozostałe książki
-
To kompleksowy podręcznik do nauki programowania w Pythonie. Jego piąte wydanie zostało gruntownie zaktualizowane i rozbudowane o dodatkowe treści. Omówiono tu najnowsze wersje Pythona w liniach 3.X i 2.X, czyli 3.3 i 2.7, i dodano opisy nowych lub rozszerzonych mechanizmów, takich jak obsługa fo...(119.40 zł najniższa cena z 30 dni)
123.38 zł
199.00 zł(-38%) -
Jeżeli jednak chcesz mieć zawsze pod ręką sprawdzone źródło informacji, które pozwoli Ci w każdej sytuacji rozwiać wątpliwości, to trafiłeś na doskonałą pozycję. Należy ona do serii Leksykon kieszonkowy i charakteryzuje się niezwykle zwięzłym, przejrzystym układem najważniejszych treści oraz porę...
-
Updated for both Python 3.4 and 2.7, this convenient pocket guide is the perfect on-the-job quick reference. You’ll find concise, need-to-know information on Python types and statements, special method names, built-in functions and exceptions, commonly used standard library modules, and oth...
Python Pocket Reference. Python In Your Pocket. 5th Edition Python Pocket Reference. Python In Your Pocket. 5th Edition
(46.74 zł najniższa cena z 30 dni)46.74 zł
54.99 zł(-15%) -
Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you...
Learning Python. Powerful Object-Oriented Programming. 5th Edition Learning Python. Powerful Object-Oriented Programming. 5th Edition
(237.15 zł najniższa cena z 30 dni)245.65 zł
289.00 zł(-15%) -
Niniejsza książka należy do popularnej serii Leksykon kieszonkowy, dzięki której zawsze i wszędzie możesz przypomnieć sobie wybrane zagadnienia, związane z różną tematyką. Pozycja, którą właśnie trzymasz w rękach, została poświęcona językowi Python. W trakcie jej lektury zapoznasz się z takimi za...(14.95 zł najniższa cena z 30 dni)
14.95 zł
29.90 zł(-50%) -
If you've mastered Python's fundamentals, you're ready to start using it to get real work done. Programming Python will show you how, with in-depth tutorials on the language's primary application domains: system administration, GUIs, and the Web. You'll also explore how Python is used in database...
Programming Python. Powerful Object-Oriented Programming. 4th Edition Programming Python. Powerful Object-Oriented Programming. 4th Edition
(237.15 zł najniższa cena z 30 dni)245.65 zł
289.00 zł(-15%) -
This is the book to reach for when you're coding on the fly and need an answer now. It's an easy-to-use reference to the core language, with descriptions of commonly used modules and toolkits, and a guide to recent changes, new features, and upgraded built-ins -- all updated to cover Python 3.X a...
Python Pocket Reference. Python in Your Pocket. 4th Edition Python Pocket Reference. Python in Your Pocket. 4th Edition
(46.74 zł najniższa cena z 30 dni)46.74 zł
54.99 zł(-15%) -
Portable, powerful, and a breeze to use, Python is ideal for both standalone programs and scripting applications. With this hands-on book, you can master the fundamentals of the core Python language quickly and efficiently, whether you're new to programming or just new to Python. Once you finish,...(118.15 zł najniższa cena z 30 dni)
126.65 zł
149.00 zł(-15%) -
Already the industry standard for Python users, ProgrammingPython fromO'Reilly just got even better. This third edition has been updated toreflect current best practices andthe abundance of changes introduced by the latest version of thelanguage, Python 2.5.Whether you're a novice or an advancedp...(177.65 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%)
Ebooka przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video zobaczysz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP4 (pliki spakowane w ZIP)
Recenzje książki: Python. Wprowadzenie. Wydanie IV (2)
Poniższe recenzje mogły powstać po przekazaniu recenzentowi darmowego egzemplarza poszczególnych utworów bądź innej zachęty do jej napisania np. zapłaty.
-
Web Audit - Robert Drózd Robert Drózd, 2014-03-04
Czwarte wydanie najpełniejszego kompendium wiedzy o Pythonie. Mark Lutz opisuje praktycznie wszystko, co jest potrzebne do codziennej pracy z Pythonem: od podstaw języka, po najbardziej zaawansowane mechanizmy. Książka może stanowić zarówno czytany od deski do deski podręcznik dla uczących się języka, jak i pomoc dla tych, którzy jeszcze nie mają całej specyfikacji języka w przysłowiowym małym palcu i muszą się posiłkować dokumentacją. Autor nie zapomina również o tych spośród czytelników, którzy przesiadają się z Pythona 2.6 na wersję trzecią.
Każdy rozdział zakończony jest krótkim quizem, sprawdzającym wiedzę czytelnika, natomiast na końcu każdej z siedmiu części znajduje się obszerniejszy zestaw ćwiczeń. I do quizów, i do ćwiczeń znajdziemy odpowiedzi. Przy okazji warto zwrócić uwagę na to jak dobrze, dzięki swej zwięzłości, kod napisany w Pythonie nadaje się do czytania na niewielkich ekranach czytników.
Cena niestety zapiera dech w piersiach, ale warto rozważyć taką inwestycję, jeżeli myślimy o Pythonie na poważnie. -
Gazeta Młodych 2012-05-01
Python to język programowania wykorzystywany przez Google i YouTube! Ponad milion programistów na całym świecie używa właśnie tego języka skryptowego. Jego atuty to niezwykła czytelność, spójność i wydajność. Kod napisany w tym języku można z łatwością utrzymywać, przenosić i używać ponownie. Pozostaje zrozumiały nawet wówczas, gdy analizuje go ktoś, kto nie jest jego autorem. Co więcej, taki kod ma rozmiary średnio o dwie trzecie do czterech piątych mniejsze od kodu w językach C++ czy Java. Python obsługuje także zaawansowane mechanizmy pozwalające na ponowne wykorzystanie kodu, takie jak programowanie zorientowane obiektowo, a programy w nim napisane działają natychmiast, bez konieczności przeprowadzania długiej kompilacji, niezależnie od wykorzystywanej platformy.
Jak piszą wydawcy tego de facto podręcznika:.Naukę rozpoczniesz od najważniejszych wbudowanych typów danych - liczb, list czy słowników. Przyjrzysz się również typom dynamicznym oraz ich interfejsom. Później poznasz instrukcje oraz ogólny model składni Pythona. Poszerzysz wiedzę na temat powiązanych z nim narzędzi, takich jak system PyDoc, a także alternatywnych możliwości tworzenia kodu. Dowiesz się wszystkiego na temat modułów: jak się je tworzy, przeładowuje i jak się ich używa. W końcu poznasz klasy oraz zagadnienia związane z programowaniem zorientowanym obiektowo i nauczysz się obsługiwać wyjątki".
Szczegóły książki
- Tytuł oryginału:
- Learning Python: Powerful Object-Oriented Programming, 4th Edition
- Tłumaczenie:
- Anna Trojan, Marek Pętlicki
- ISBN Książki drukowanej:
- 978-83-246-2694-6, 9788324626946
- Data wydania książki drukowanej:
- 2010-12-30
- ISBN Ebooka:
- 978-83-246-4989-1, 9788324649891
- Data wydania ebooka:
-
2012-03-14
Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@helion.pl.
- Format:
- 172x245
- Numer z katalogu:
- 5722
- Rozmiar pliku Pdf:
- 15.1MB
- Rozmiar pliku ePub:
- 4.5MB
- Rozmiar pliku Mobi:
- 12.4MB
- Przykłady na ftp
Ebook zawiera materiały dodatkowe, które możesz pobrać z serwera FTP - link znajdziesz na stronie redakcyjnej.
- Erraty / Zgłoś erratę
- Kategorie:
Programowanie » Python - Programowanie
- Serie wydawnicze: O'Reilly
Spis treści książki
- Dlaczego ludzie używają Pythona? (49)
- Jakość oprogramowania (50)
- Wydajność programistów (51)
- Czy Python jest językiem skryptowym? (51)
- Jakie są zatem wady Pythona? (53)
- Kto dzisiaj używa Pythona? (53)
- Co mogę zrobić za pomocą Pythona? (55)
- Programowanie systemowe (55)
- Graficzne interfejsy użytkownika (55)
- Skrypty internetowe (56)
- Integracja komponentów (56)
- Programowanie bazodanowe (57)
- Szybkie prototypowanie (57)
- Programowanie numeryczne i naukowe (57)
- Gry, grafika, porty szeregowe, XML, roboty i tym podobne (58)
- Jakie wsparcie techniczne ma Python? (58)
- Jakie są techniczne mocne strony Pythona? (59)
- Jest zorientowany obiektowo (59)
- Jest darmowy (59)
- Jest przenośny (60)
- Ma duże możliwości (61)
- Można go łączyć z innymi językami (62)
- Jest łatwy w użyciu (62)
- Jest łatwy do nauczenia się (62)
- Zawdzięcza swoją nazwę Monty Pythonowi (63)
- Jak Python wygląda na tle innych języków? (63)
- Podsumowanie rozdziału (64)
- Sprawdź swoją wiedzę - quiz (65)
- Sprawdź swoją wiedzę - odpowiedzi (65)
- Wprowadzenie do interpretera Pythona (69)
- Wykonywanie programu (71)
- Z punktu widzenia programisty (71)
- Z punktu widzenia Pythona (72)
- Warianty modeli wykonywania (74)
- Alternatywne implementacje Pythona (75)
- Narzędzia do optymalizacji wykonywania (76)
- Zamrożone pliki binarne (78)
- Inne opcje wykonywania (78)
- Przyszłe możliwości? (79)
- Podsumowanie rozdziału (80)
- Sprawdź swoją wiedzę - quiz (80)
- Sprawdź swoją wiedzę - odpowiedzi (80)
- Interaktywny wiersz poleceń (81)
- Interaktywne wykonywanie kodu (82)
- Do czego służy sesja interaktywna? (83)
- Wykorzystywanie sesji interaktywnej (85)
- Systemowe wiersze poleceń i pliki (87)
- Pierwszy skrypt (87)
- Wykonywanie plików za pomocą wiersza poleceń (88)
- Wykorzystywanie wierszy poleceń i plików (90)
- Skrypty wykonywalne Uniksa (#!) (91)
- Kliknięcie ikony pliku (92)
- Kliknięcie ikony w systemie Windows (93)
- Sztuczka z funkcją input (94)
- Inne ograniczenia klikania ikon (95)
- Importowanie i przeładowywanie modułów (96)
- Więcej o modułach - atrybuty (98)
- Uwagi na temat używania instrukcji import i reload (100)
- Wykorzystywanie exec do wykonywania plików modułów (101)
- Interfejs użytkownika IDLE (102)
- Podstawy IDLE (103)
- Korzystanie z IDLE (105)
- Zaawansowane opcje IDLE (106)
- Inne IDE (107)
- Inne opcje wykonywania kodu (108)
- Osadzanie wywołań (108)
- Zamrożone binarne pliki wykonywalne (109)
- Uruchamianie kodu w edytorze tekstowym (110)
- Jeszcze inne możliwości uruchamiania (110)
- Przyszłe możliwości (110)
- Jaką opcję wybrać? (111)
- Podsumowanie rozdziału (112)
- Sprawdź swoją wiedzę - quiz (113)
- Sprawdź swoją wiedzę - odpowiedzi (113)
- Sprawdź swoją wiedzę - ćwiczenia do części pierwszej (114)
- Po co korzysta się z typów wbudowanych? (120)
- Najważniejsze typy danych w Pythonie (121)
- Liczby (122)
- Łańcuchy znaków (124)
- Operacje na sekwencjach (124)
- Niezmienność (126)
- Metody specyficzne dla typu (126)
- Otrzymanie pomocy (127)
- Inne sposoby kodowania łańcuchów znaków (128)
- Dopasowywanie wzorców (129)
- Listy (130)
- Operacje na sekwencjach (130)
- Operacje specyficzne dla typu (130)
- Sprawdzanie granic (131)
- Zagnieżdżanie (131)
- Listy składane (132)
- Słowniki (133)
- Operacje na odwzorowaniach (134)
- Zagnieżdżanie raz jeszcze (134)
- Sortowanie kluczy - pętle for (136)
- Iteracja i optymalizacja (137)
- Brakujące klucze - testowanie za pomocą if (138)
- Krotki (139)
- Czemu służą krotki? (140)
- Pliki (140)
- Inne narzędzia podobne do plików (142)
- Inne typy podstawowe (142)
- Jak zepsuć elastyczność kodu (143)
- Klasy zdefiniowane przez użytkownika (144)
- I wszystko inne (145)
- Podsumowanie rozdziału (145)
- Sprawdź swoją wiedzę - quiz (146)
- Sprawdź swoją wiedzę - odpowiedzi (146)
- Podstawy typów liczbowych Pythona (149)
- Literały liczbowe (150)
- Wbudowane narzędzia liczbowe (151)
- Operatory wyrażeń Pythona (152)
- Liczby w akcji (156)
- Zmienne i podstawowe wyrażenia (157)
- Formaty wyświetlania liczb (158)
- Porównania - zwykłe i łączone (160)
- Dzielenie - klasyczne, bez reszty i prawdziwe (161)
- Precyzja liczb całkowitych (164)
- Liczby zespolone (165)
- Notacja szesnastkowa, ósemkowa i dwójkowa (165)
- Operacje poziomu bitowego (167)
- Inne wbudowane narzędzia liczbowe (168)
- Inne typy liczbowe (170)
- Typ liczby dziesiętnej (170)
- Typ liczby ułamkowej (172)
- Zbiory (176)
- Wartości Boolean (181)
- Dodatkowe rozszerzenia numeryczne (182)
- Podsumowanie rozdziału (183)
- Sprawdź swoją wiedzę - quiz (183)
- Sprawdź swoją wiedzę - odpowiedzi (184)
- Sprawa brakujących deklaracji typu (185)
- Zmienne, obiekty i referencje (186)
- Typy powiązane są z obiektami, a nie ze zmiennymi (187)
- Obiekty są uwalniane (188)
- Referencje współdzielone (190)
- Referencje współdzielone a modyfikacje w miejscu (191)
- Referencje współdzielone a równość (193)
- Typy dynamiczne są wszędzie (194)
- Podsumowanie rozdziału (194)
- Sprawdź swoją wiedzę - quiz (195)
- Sprawdź swoją wiedzę - odpowiedzi (195)
- Literały łańcuchów znaków (199)
- Łańcuchy znaków w apostrofach i cudzysłowach są tym samym (200)
- Sekwencje ucieczki reprezentują bajty specjalne (200)
- Surowe łańcuchy znaków blokują sekwencje ucieczki (203)
- Potrójne cudzysłowy i apostrofy kodują łańcuchy znaków będące wielowierszowymi blokami (204)
- Łańcuchy znaków w akcji (205)
- Podstawowe operacje (206)
- Indeksowanie i wycinki (207)
- Narzędzia do konwersji łańcuchów znaków (210)
- Modyfikowanie łańcuchów znaków (213)
- Metody łańcuchów znaków (214)
- Przykłady metod łańcuchów znaków - modyfikowanie (215)
- Przykłady metod łańcuchów znaków - analiza składniowa tekstu (218)
- Inne znane metody łańcuchów znaków w akcji (219)
- Oryginalny moduł string (usunięty w 3.0) (220)
- Wyrażenia formatujące łańcuchy znaków (221)
- Zaawansowane wyrażenia formatujące (222)
- Wyrażenia formatujące z użyciem słownika (224)
- Metoda format (225)
- Podstawy (225)
- Użycie kluczy, atrybutów i przesunięć (226)
- Formatowanie specjalizowane (227)
- Porównanie z wyrażeniami formatującymi (229)
- Po co nam kolejny mechanizm formatujący? (232)
- Generalne kategorie typów (235)
- Typy z jednej kategorii współdzielą zbiory operacji (235)
- Typy zmienne można modyfikować w miejscu (236)
- Podsumowanie rozdziału (236)
- Sprawdź swoją wiedzę - quiz (236)
- Sprawdź swoją wiedzę - odpowiedzi (237)
- Listy (239)
- Listy w akcji (241)
- Podstawowe operacje na listach (241)
- Iteracje po listach i składanie list (242)
- Indeksowanie, wycinki i macierze (243)
- Modyfikacja list w miejscu (244)
- Słowniki (248)
- Słowniki w akcji (249)
- Podstawowe operacje na słownikach (250)
- Modyfikacja słowników w miejscu (251)
- Inne metody słowników (252)
- Przykład z tabelą języków programowania (253)
- Uwagi na temat korzystania ze słowników (254)
- Inne sposoby tworzenia słowników (257)
- Zmiany dotyczące słowników w 3.0 (258)
- Podsumowanie rozdziału (264)
- Sprawdź swoją wiedzę - quiz (264)
- Sprawdź swoją wiedzę - odpowiedzi (264)
- Krotki (267)
- Krotki w akcji (268)
- Dlaczego istnieją listy i krotki? (271)
- Pliki (271)
- Otwieranie plików (272)
- Wykorzystywanie plików (273)
- Pliki w akcji (274)
- Inne narzędzia powiązane z plikami (280)
- Raz jeszcze o kategoriach typów (281)
- Elastyczność obiektów (282)
- Referencje a kopie (283)
- Porównania, równość i prawda (285)
- Porównywanie słowników w Pythonie 3.0 (287)
- Znaczenie True i False w Pythonie (288)
- Hierarchie typów Pythona (290)
- Obiekty typów (291)
- Inne typy w Pythonie (291)
- Pułapki typów wbudowanych (292)
- Przypisanie tworzy referencje, nie kopie (292)
- Powtórzenie dodaje jeden poziom zagłębienia (293)
- Uwaga na cykliczne struktury danych (293)
- Typów niezmiennych nie można modyfikować w miejscu (294)
- Podsumowanie rozdziału (294)
- Sprawdź swoją wiedzę - quiz (294)
- Sprawdź swoją wiedzę - odpowiedzi (295)
- Sprawdź swoją wiedzę - ćwiczenia do części drugiej (295)
- Raz jeszcze o strukturze programu Pythona (301)
- Instrukcje Pythona (301)
- Historia dwóch if (303)
- Co dodaje Python (304)
- Co usuwa Python (304)
- Skąd bierze się składnia indentacji? (306)
- Kilka przypadków specjalnych (308)
- Szybki przykład - interaktywne pętle (310)
- Prosta pętla interaktywna (310)
- Wykonywanie obliczeń na danych użytkownika (311)
- Obsługa błędów za pomocą sprawdzania danych wejściowych (312)
- Obsługa błędów za pomocą instrukcji try (313)
- Kod zagnieżdżony na trzy poziomy głębokości (314)
- Podsumowanie rozdziału (315)
- Sprawdź swoją wiedzę - quiz (315)
- Sprawdź swoją wiedzę - odpowiedzi (315)
- Instrukcje przypisania (317)
- Formy instrukcji przypisania (318)
- Przypisanie sekwencji (319)
- Rozszerzona składnia rozpakowania sekwencji w 3.0 (322)
- Przypisanie z wieloma celami (325)
- Przypisania rozszerzone (326)
- Reguły dotyczące nazw zmiennych (329)
- Instrukcje wyrażeń (332)
- Instrukcje wyrażeń i modyfikacje w miejscu (333)
- Polecenia print (334)
- Funkcja print Pythona 3.0 (334)
- Instrukcja print w Pythonie 2.6 (337)
- Przekierowanie strumienia wyjściowego (338)
- Wyświetlanie niezależne od wersji (341)
- Podsumowanie rozdziału (343)
- Sprawdź swoją wiedzę - quiz (344)
- Sprawdź swoją wiedzę - odpowiedzi (344)
- Instrukcje if (345)
- Ogólny format (345)
- Proste przykłady (346)
- Rozgałęzienia kodu (346)
- Reguły składni Pythona (348)
- Ograniczniki bloków - reguły indentacji (349)
- Ograniczniki instrukcji - wiersze i kontynuacje (351)
- Kilka przypadków specjalnych (352)
- Testy prawdziwości (353)
- Wyrażenie trójargumentowe if/else (355)
- Podsumowanie rozdziału (356)
- Sprawdź swoją wiedzę - quiz (357)
- Sprawdź swoją wiedzę - odpowiedzi (358)
- Pętle while (359)
- Ogólny format (360)
- Przykłady (360)
- Instrukcje break, continue, pass oraz else w pętli (361)
- Ogólny format pętli (361)
- Instrukcja pass (361)
- Instrukcja continue (363)
- Instrukcja break (363)
- Instrukcja else (364)
- Pętle for (365)
- Ogólny format (365)
- Przykłady (367)
- Techniki tworzenia pętli (372)
- Pętle liczników - while i range (373)
- Przechodzenie niewyczerpujące - range i wycinki (374)
- Modyfikacja list - range (375)
- Przechodzenie równoległe - zip oraz map (376)
- Generowanie wartości przesunięcia i elementów - enumerate (379)
- Podsumowanie rozdziału (380)
- Sprawdź swoją wiedzę - quiz (380)
- Sprawdź swoją wiedzę - odpowiedzi (380)
- Pierwsze spojrzenie na iteratory (383)
- Protokół iteracyjny, iteratory plików (384)
- Kontrola iteracji - iter i next (386)
- Inne iteratory typów wbudowanych (388)
- Listy składane - wprowadzenie (390)
- Podstawy list składanych (390)
- Wykorzystywanie list składanych w plikach (391)
- Rozszerzona składnia list składanych (392)
- Inne konteksty iteracyjne (393)
- Nowe obiekty iterowane w Pythonie 3.0 (397)
- Iterator range() (397)
- Iteratory map(), zip() i filter() (398)
- Kilka iteratorów na tym samym obiekcie (399)
- Iteratory widoku słownika (400)
- Inne zagadnienia związane z iteratorami (402)
- Podsumowanie rozdziału (402)
- Sprawdź swoją wiedzę - quiz (402)
- Sprawdź swoją wiedzę - odpowiedzi (403)
- Źródła dokumentacji Pythona (405)
- Komentarze ze znakami # (406)
- Funkcja dir (406)
- Łańcuchy znaków dokumentacji - __doc__ (407)
- PyDoc - funkcja help (410)
- PyDoc - raporty HTML (412)
- Zbiór standardowej dokumentacji (415)
- Zasoby internetowe (415)
- Publikowane książki (416)
- Często spotykane problemy programistyczne (417)
- Podsumowanie rozdziału (419)
- Sprawdź swoją wiedzę - quiz (419)
- Sprawdź swoją wiedzę - odpowiedzi (419)
- Ćwiczenia do części trzeciej (420)
- Po co używa się funkcji? (426)
- Tworzenie funkcji (426)
- Instrukcje def (428)
- Instrukcja def uruchamiana jest w czasie wykonania (428)
- Pierwszy przykład - definicje i wywoływanie (429)
- Definicja (429)
- Wywołanie (430)
- Polimorfizm w Pythonie (430)
- Drugi przykład - przecinające się sekwencje (431)
- Definicja (432)
- Wywołania (432)
- Raz jeszcze o polimorfizmie (433)
- Zmienne lokalne (433)
- Podsumowanie rozdziału (434)
- Sprawdź swoją wiedzę - quiz (434)
- Sprawdź swoją wiedzę - odpowiedzi (434)
- Podstawy zakresów w Pythonie (437)
- Reguły dotyczące zakresów (438)
- Rozwiązywanie konfliktów w zakresie nazw - reguła LEGB (440)
- Przykład zakresu (441)
- Zakres wbudowany (442)
- Instrukcja global (443)
- Minimalizowanie stosowania zmiennych globalnych (445)
- Minimalizacja modyfikacji dokonywanych pomiędzy plikami (446)
- Inne metody dostępu do zmiennych globalnych (447)
- Zakresy a funkcje zagnieżdżone (448)
- Szczegóły dotyczące zakresów zagnieżdżonych (449)
- Przykład zakresu zagnieżdżonego (449)
- Instrukcja nonlocal (455)
- Podstawy instrukcji nonlocal (455)
- Instrukcja nonlocal w akcji (456)
- Czemu służą zmienne nielokalne? (458)
- Podsumowanie rozdziału (462)
- Sprawdź swoją wiedzę - quiz (462)
- Sprawdź swoją wiedzę - odpowiedzi (463)
- Podstawy przekazywania argumentów (465)
- Argumenty a współdzielone referencje (466)
- Unikanie modyfikacji zmiennych argumentów (468)
- Symulowanie parametrów wyjścia (469)
- Specjalne tryby dopasowania argumentów (470)
- Podstawy (470)
- Składnia dopasowania (471)
- Dopasowywanie argumentów - szczegóły (472)
- Przykłady ze słowami kluczowymi i wartościami domyślnymi (473)
- Przykład dowolnych argumentów (475)
- Argumenty mogące być tylko słowami kluczowymi z Pythona 3.0 (479)
- Przykład z funkcją obliczającą minimum (482)
- Pełne rozwiązanie (483)
- Dodatkowy bonus (484)
- Puenta (485)
- Uogólnione funkcje działające na zbiorach (485)
- Emulacja funkcji print z Pythona 3.0 (486)
- Wykorzystywanie argumentów mogących być tylko słowami kluczowymi (487)
- Podsumowanie rozdziału (488)
- Sprawdź swoją wiedzę - quiz (489)
- Sprawdź swoją wiedzę - odpowiedzi (490)
- Koncepcje projektowania funkcji (491)
- Funkcje rekurencyjne (493)
- Sumowanie z użyciem rekurencji (493)
- Implementacje alternatywne (494)
- Pętle a rekurencja (495)
- Obsługa dowolnych struktur (496)
- Obiekty funkcji - atrybuty i adnotacje (497)
- Pośrednie wywołania funkcji (497)
- Introspekcja funkcji (498)
- Atrybuty funkcji (499)
- Adnotacje funkcji w Pythonie 3.0 (499)
- Funkcje anonimowe - lambda (501)
- Wyrażenia lambda (501)
- Po co używa się wyrażenia lambda? (503)
- Jak łatwo zaciemnić kod napisany w Pythonie (504)
- Zagnieżdżone wyrażenia lambda a zakresy (505)
- Odwzorowywanie funkcji na sekwencje - map (507)
- Narzędzia programowania funkcyjnego - filter i reduce (508)
- Podsumowanie rozdziału (510)
- Sprawdź swoją wiedzę - quiz (510)
- Sprawdź swoją wiedzę - odpowiedzi (510)
- Listy składane, podejście drugie - narzędzia funkcyjne (513)
- Listy składane kontra map (514)
- Dodajemy warunki i pętle zagnieżdżone - filter (515)
- Listy składane i macierze (517)
- Zrozumieć listy składane (518)
- Iteratorów ciąg dalszy - generatory (520)
- Funkcje generatorów - yield kontra return (520)
- Wyrażenia generatorów - iteratory spotykają złożenia (524)
- Funkcje generatorów kontra wyrażenia generatorów (525)
- Generatory są jednorazowymi iteratorami (526)
- Emulacja funkcji zip i map za pomocą narzędzi iteracyjnych (527)
- Generowanie wyników we wbudowanych typach i klasach (531)
- Podsumowanie obiektów składanych w 3.0 (533)
- Zrozumieć zbiory i słowniki składane (534)
- Rozszerzona składnia zbiorów i słowników składanych (534)
- Pomiary wydajności implementacji iteratorów (535)
- Moduł mytimer (536)
- Skrypt mierzący wydajność (536)
- Pomiary czasu (537)
- Alternatywne moduły mierzące wydajność (539)
- Inne sugestie (543)
- Pułapki związane z funkcjami (544)
- Lokalne nazwy są wykrywane w sposób statyczny (544)
- Wartości domyślne i obiekty mutowalne (546)
- Funkcje niezwracające wyników (548)
- Funkcje zagnieżdżone a zmienne modyfikowane w pętli (548)
- Podsumowanie rozdziału (548)
- Sprawdź swoją wiedzę - quiz (549)
- Sprawdź swoją wiedzę - odpowiedzi (549)
- Sprawdź swoją wiedzę - ćwiczenia do części czwartej (550)
- Po co używa się modułów? (555)
- Architektura programu w Pythonie (556)
- Struktura programu (556)
- Importowanie i atrybuty (557)
- Moduły biblioteki standardowej (558)
- Jak działa importowanie (559)
- 1. Odnalezienie modułu (560)
- 2. (Ewentualne) Kompilowanie (560)
- 3. Wykonanie (561)
- Ścieżka wyszukiwania modułów (561)
- Konfiguracja ścieżki wyszukiwania (563)
- Wariacje ścieżki wyszukiwania modułów (564)
- Lista sys.path (564)
- Wybór pliku modułu (565)
- Zaawansowane zagadnienia związane z wyborem modułów (566)
- Podsumowanie rozdziału (566)
- Sprawdź swoją wiedzę - quiz (567)
- Sprawdź swoją wiedzę - odpowiedzi (568)
- Tworzenie modułów (569)
- Użycie modułów (570)
- Instrukcja import (570)
- Instrukcja from (571)
- Instrukcja from * (571)
- Operacja importowania odbywa się tylko raz (571)
- Instrukcje import oraz from są przypisaniami (572)
- Modyfikacja zmiennych pomiędzy plikami (573)
- Równoważność instrukcji import oraz from (573)
- Potencjalne pułapki związane z użyciem instrukcji from (574)
- Przestrzenie nazw modułów (575)
- Pliki generują przestrzenie nazw (576)
- Kwalifikowanie nazw atrybutów (577)
- Importowanie a zakresy (578)
- Zagnieżdżanie przestrzeni nazw (579)
- Przeładowywanie modułów (580)
- Podstawy przeładowywania modułów (581)
- Przykład przeładowywania z użyciem reload (581)
- Podsumowanie rozdziału (582)
- Sprawdź swoją wiedzę - quiz (583)
- Sprawdź swoją wiedzę - odpowiedzi (584)
- Podstawy importowania pakietów (585)
- Pakiety a ustawienia ścieżki wyszukiwania (586)
- Pliki pakietów __init__.py (586)
- Przykład importowania pakietu (588)
- Instrukcja from a instrukcja import w importowaniu pakietów (589)
- Do czego służy importowanie pakietów? (590)
- Historia trzech systemów (590)
- Względne importowanie pakietów (593)
- Zmiany w Pythonie 3.0 (593)
- Podstawy importów względnych (594)
- Do czego służą importy względne? (595)
- Zakres importów względnych (597)
- Podsumowanie reguł wyszukiwania modułów (598)
- Importy względne w działaniu (598)
- Podsumowanie rozdziału (603)
- Sprawdź swoją wiedzę - quiz (604)
- Sprawdź swoją wiedzę - odpowiedzi (604)
- Ukrywanie danych w modułach (607)
- Minimalizacja niebezpieczeństw użycia from * - _X oraz __all__ (608)
- Włączanie opcji z przyszłych wersji Pythona (608)
- Mieszane tryby użycia - __name__ oraz __main__ (609)
- Testy jednostkowe z wykorzystaniem __name__ (610)
- Użycie argumentów wiersza poleceń z __name__ (611)
- Modyfikacja ścieżki wyszukiwania modułów (613)
- Rozszerzenie as dla instrukcji import oraz from (614)
- Moduły są obiektami - metaprogramy (615)
- Importowanie modułów za pomocą łańcucha znaków nazwy (617)
- Przechodnie przeładowywanie modułów (618)
- Projektowanie modułów (621)
- Pułapki związane z modułami (622)
- W kodzie najwyższego poziomu kolejność instrukcji ma znaczenie (622)
- Instrukcja from kopiuje nazwy, jednak łącza już nie (623)
- Instrukcja from * może zaciemnić znaczenie zmiennych (624)
- Funkcja reload może nie mieć wpływu na obiekty importowane za pomocą from (624)
- Funkcja reload i instrukcja from a testowanie interaktywne (625)
- Rekurencyjne importowanie za pomocą from może nie działać (626)
- Podsumowanie rozdziału (627)
- Sprawdź swoją wiedzę - quiz (627)
- Sprawdź swoją wiedzę - odpowiedzi (628)
- Sprawdź swoją wiedzę - ćwiczenia do części piątej (628)
- Po co używa się klas? (634)
- Programowanie zorientowane obiektowo z dystansu (635)
- Wyszukiwanie dziedziczenia atrybutów (635)
- Klasy a instancje (637)
- Wywołania metod klasy (638)
- Tworzenie drzew klas (638)
- Programowanie zorientowane obiektowo oparte jest na ponownym wykorzystaniu kodu (641)
- Podsumowanie rozdziału (643)
- Sprawdź swoją wiedzę - quiz (644)
- Sprawdź swoją wiedzę - odpowiedzi (644)
- Klasy generują większą liczbę obiektów instancji (647)
- Obiekty klas udostępniają zachowania domyślne (648)
- Obiekty instancji są rzeczywistymi elementami (648)
- Pierwszy przykład (649)
- Klasy dostosowuje się do własnych potrzeb przez dziedziczenie (651)
- Drugi przykład (652)
- Klasy są atrybutami w modułach (653)
- Klasy mogą przechwytywać operatory Pythona (654)
- Trzeci przykład (655)
- Po co przeciąża się operatory? (657)
- Najprostsza klasa Pythona na świecie (658)
- Klasy a słowniki (660)
- Podsumowanie rozdziału (662)
- Sprawdź swoją wiedzę - quiz (662)
- Sprawdź swoją wiedzę - odpowiedzi (663)
- Krok 1. - tworzenie instancji (666)
- Tworzenie konstruktorów (666)
- Testowanie w miarę pracy (667)
- Wykorzystywanie kodu na dwa sposoby (668)
- Krok 2. - dodawanie metod (669)
- Tworzenie kodu metod (671)
- Krok 3. - przeciążanie operatorów (673)
- Udostępnienie wyświetlania (674)
- Krok 4. - dostosowanie zachowania do własnych potrzeb za pomocą klas podrzędnych (675)
- Tworzenie klas podrzędnych (675)
- Rozszerzanie metod - niewłaściwy sposób (676)
- Rozszerzanie metod - właściwy sposób (676)
- Polimorfizm w akcji (678)
- Dziedziczenie, dostosowanie do własnych potrzeb i rozszerzenie (679)
- Programowanie zorientowane obiektowo - idea (680)
- Krok 5. - dostosowanie do własnych potrzeb także konstruktorów (680)
- Programowanie zorientowane obiektowo jest prostsze, niż się wydaje (682)
- Inne sposoby łączenia klas (683)
- Krok 6. - wykorzystywanie narzędzi do introspekcji (684)
- Specjalne atrybuty klas (686)
- Uniwersalne narzędzie do wyświetlania (687)
- Atrybuty instancji a atrybuty klas (688)
- Rozważania na temat nazw w klasach narzędzi (689)
- Ostateczna postać naszych klas (690)
- Krok 7. i ostatni - przechowanie obiektów w bazie danych (691)
- Obiekty pickle i shelve (691)
- Przechowywanie obiektów w bazie danych za pomocą shelve (692)
- Interaktywne badanie obiektów shelve (694)
- Uaktualnianie obiektów w pliku shelve (695)
- Przyszłe kierunki rozwoju (697)
- Podsumowanie rozdziału (699)
- Sprawdź swoją wiedzę - quiz (699)
- Sprawdź swoją wiedzę - odpowiedzi (700)
- Instrukcja class (703)
- Ogólna forma (703)
- Przykład (704)
- Metody (706)
- Przykład metody (707)
- Wywoływanie konstruktorów klas nadrzędnych (708)
- Inne możliwości wywoływania metod (708)
- Dziedziczenie (708)
- Tworzenie drzewa atrybutów (709)
- Specjalizacja odziedziczonych metod (710)
- Techniki interfejsów klas (711)
- Abstrakcyjne klasy nadrzędne (712)
- Abstrakcyjne klasy nadrzędne z Pythona 2.6 oraz 3.0 (713)
- Przestrzenie nazw - cała historia (714)
- Pojedyncze nazwy - globalne, o ile nie przypisane (715)
- Nazwy atrybutów - przestrzenie nazw obiektów (715)
- Zen przestrzeni nazw Pythona - przypisania klasyfikują zmienne (715)
- Słowniki przestrzeni nazw (718)
- Łącza przestrzeni nazw (720)
- Raz jeszcze o łańcuchach znaków dokumentacji (722)
- Klasy a moduły (723)
- Podsumowanie rozdziału (724)
- Sprawdź swoją wiedzę - quiz (724)
- Sprawdź swoją wiedzę - odpowiedzi (724)
- Podstawy (727)
- Konstruktory i wyrażenia - __init__ i __sub__ (728)
- Często spotykane metody przeciążania operatorów (728)
- Indeksowanie i wycinanie - __getitem__ i __setitem__ (730)
- Wycinki (730)
- Iteracja po indeksie - __getitem__ (731)
- Obiekty iteratorów - __iter__ i __next__ (733)
- Iteratory zdefiniowane przez użytkownika (734)
- Wiele iteracji po jednym obiekcie (735)
- Test przynależności - __contains__, __iter__ i __getitem__ (737)
- Metody __getattr__ oraz __setattr__ przechwytują referencje do atrybutów (740)
- Inne narzędzia do zarządzania atrybutami (741)
- Emulowanie prywatności w atrybutach instancji (741)
- Metody __repr__ oraz __str__ zwracają reprezentacje łańcuchów znaków (742)
- Metoda __radd__ obsługuje dodawanie prawostronne i modyfikację w miejscu (745)
- Dodawanie w miejscu (746)
- Metoda __call_ przechwytuje wywołania (747)
- Interfejsy funkcji i kod oparty na wywołaniach zwrotnych (748)
- Porównania - __lt__, __gt__ i inne (750)
- Metoda __cmp__ w 2.6 (usunięta w 3.0) (750)
- Testy logiczne - __bool__ i __len__ (751)
- Destrukcja obiektu - __del__ (752)
- Podsumowanie rozdziału (754)
- Sprawdź swoją wiedzę - quiz (755)
- Sprawdź swoją wiedzę - odpowiedzi (755)
- Python a programowanie zorientowane obiektowo (757)
- Przeciążanie za pomocą sygnatur wywołań (lub bez nich) (758)
- Programowanie zorientowane obiektowo i dziedziczenie - związek "jest" (759)
- Programowanie zorientowane obiektowo i kompozycja - związki typu "ma" (760)
- Raz jeszcze procesor strumienia danych (762)
- Programowanie zorientowane obiektowo a delegacja - obiekty "opakowujące" (765)
- Pseudoprywatne atrybuty klas (767)
- Przegląd zniekształcania nazw zmiennych (767)
- Po co używa się atrybutów pseudoprywatnych? (768)
- Metody są obiektami - z wiązaniem i bez wiązania (770)
- Metody niezwiązane w 3.0 (772)
- Metody związane i inne obiekty wywoływane (773)
- Dziedziczenie wielokrotne - klasy mieszane (775)
- Tworzenie klas mieszanych (776)
- Klasy są obiektami - uniwersalne fabryki obiektów (785)
- Do czego służą fabryki? (787)
- Inne zagadnienia związane z projektowaniem (788)
- Podsumowanie rozdziału (788)
- Sprawdź swoją wiedzę - quiz (789)
- Sprawdź swoją wiedzę - odpowiedzi (789)
- Rozszerzanie typów wbudowanych (791)
- Rozszerzanie typów za pomocą osadzania (792)
- Rozszerzanie typów za pomocą klas podrzędnych (793)
- Klasy w nowym stylu (795)
- Nowości w klasach w nowym stylu (796)
- Zmiany w modelu typów (797)
- Zmiany w dziedziczeniu diamentowym (801)
- Nowości w klasach w nowym stylu (805)
- Sloty (805)
- Właściwości klas (809)
- Przeciążanie nazw - __getattribute__ i deskryptory (811)
- Metaklasy (811)
- Metody statyczne oraz metody klasy (811)
- Do czego potrzebujemy metod specjalnych? (812)
- Metody statyczne w 2.6 i 3.0 (812)
- Alternatywy dla metod statycznych (814)
- Używanie metod statycznych i metod klas (815)
- Zliczanie instancji z użyciem metod statycznych (817)
- Zliczanie instancji z metodami klas (818)
- Dekoratory i metaklasy - część 1. (820)
- Podstawowe informacje o dekoratorach funkcji (820)
- Przykład dekoratora (821)
- Dekoratory klas i metaklasy (822)
- Dalsza lektura (823)
- Pułapki związane z klasami (824)
- Modyfikacja atrybutów klas może mieć efekty uboczne (824)
- Modyfikowanie mutowalnych atrybutów klas również może mieć efekty uboczne (825)
- Dziedziczenie wielokrotne - kolejność ma znaczenie (826)
- Metody, klasy oraz zakresy zagnieżdżone (827)
- Klasy wykorzystujące delegację w 3.0 - __getattr__ i funkcje wbudowane (829)
- Przesadne opakowywanie (829)
- Podsumowanie rozdziału (830)
- Sprawdź swoją wiedzę - quiz (830)
- Sprawdź swoją wiedzę - odpowiedzi (830)
- Sprawdź swoją wiedzę - ćwiczenia do części szóstej (831)
- Po co używa się wyjątków? (841)
- Role wyjątków (842)
- Wyjątki w skrócie (843)
- Domyślny program obsługi wyjątków (843)
- Przechwytywanie wyjątków (844)
- Zgłaszanie wyjątków (845)
- Wyjątki zdefiniowane przez użytkownika (845)
- Działania końcowe (846)
- Podsumowanie rozdziału (847)
- Sprawdź swoją wiedzę - quiz (849)
- Sprawdź swoją wiedzę - odpowiedzi (849)
- Instrukcja try/except/else (851)
- Części instrukcji try (853)
- Część try/else (855)
- Przykład - zachowanie domyślne (856)
- Przykład - przechwytywanie wbudowanych wyjątków (857)
- Instrukcja try/finally (857)
- Przykład - działania kończące kod z użyciem try/finally (858)
- Połączona instrukcja try/except/finally (859)
- Składnia połączonej instrukcji try (860)
- Łączenie finally oraz except za pomocą zagnieżdżania (861)
- Przykład połączonego try (862)
- Instrukcja raise (863)
- Przekazywanie wyjątków za pomocą raise (864)
- Łańcuchy wyjątków w Pythonie 3.0 - raise from (865)
- Instrukcja assert (865)
- Przykład - wyłapywanie ograniczeń (ale nie błędów!) (866)
- Menedżery kontekstu with/as (867)
- Podstawowe zastosowanie (867)
- Protokół zarządzania kontekstem (868)
- Podsumowanie rozdziału (870)
- Sprawdź swoją wiedzę - quiz (871)
- Sprawdź swoją wiedzę - odpowiedzi (871)
- Wyjątki - powrót do przyszłości (874)
- Wyjątki oparte na łańcuchach znaków znikają (874)
- Wyjątki oparte na klasach (875)
- Tworzenie klas wyjątków (875)
- Do czego służą hierarchie wyjątków? (877)
- Wbudowane klasy wyjątków (880)
- Kategorie wbudowanych wyjątków (881)
- Domyślne wyświetlanie oraz stan (882)
- Własne sposoby wyświetlania (883)
- Własne dane oraz zachowania (884)
- Udostępnianie szczegółów wyjątku (884)
- Udostępnianie metod wyjątków (885)
- Podsumowanie rozdziału (886)
- Sprawdź swoją wiedzę - quiz (886)
- Sprawdź swoją wiedzę - odpowiedzi (886)
- Zagnieżdżanie programów obsługi wyjątków (889)
- Przykład - zagnieżdżanie przebiegu sterowania (891)
- Przykład - zagnieżdżanie składniowe (891)
- Zastosowanie wyjątków (893)
- Wyjątki nie zawsze są błędami (893)
- Funkcje mogą sygnalizować warunki za pomocą raise (893)
- Zamykanie plików oraz połączeń z serwerem (894)
- Debugowanie z wykorzystaniem zewnętrznych instrukcji try (895)
- Testowanie kodu wewnątrz tego samego procesu (895)
- Więcej informacji na temat funkcji sys.exc_info (896)
- Wskazówki i pułapki dotyczące projektowania wyjątków (897)
- Co powinniśmy opakować w try (897)
- Jak nie przechwytywać zbyt wiele - unikanie pustych except i wyjątków (898)
- Jak nie przechwytywać zbyt mało - korzystanie z kategorii opartych na klasach (900)
- Podsumowanie jądra języka Python (901)
- Zbiór narzędzi Pythona (901)
- Narzędzia programistyczne przeznaczone do większych projektów (902)
- Podsumowanie rozdziału (906)
- Sprawdź swoją wiedzę - quiz (906)
- Sprawdź swoją wiedzę - odpowiedzi (906)
- Sprawdź swoją wiedzę - ćwiczenia do części siódmej (907)
- Zmiany w łańcuchach znaków w Pythonie 3.0 (912)
- Podstawy łańcuchów znaków (913)
- Kodowanie znaków (913)
- Typy łańcuchów znaków Pythona (915)
- Pliki binarne i tekstowe (916)
- Łańcuchy znaków Pythona 3.0 w akcji (918)
- Literały i podstawowe właściwości (918)
- Konwersje (919)
- Kod łańcuchów znaków Unicode (920)
- Kod tekstu z zakresu ASCII (921)
- Kod tekstu spoza zakresu ASCII (921)
- Kodowanie i dekodowanie tekstu spoza zakresu ASCII (922)
- Inne techniki kodowania łańcuchów Unicode (923)
- Konwersja kodowania (925)
- Łańcuchy znaków Unicode w Pythonie 2.6 (925)
- Deklaracje typu kodowania znaków pliku źródłowego (928)
- Wykorzystywanie obiektów bytes z Pythona 3.0 (929)
- Wywołania metod (929)
- Operacje na sekwencjach (930)
- Inne sposoby tworzenia obiektów bytes (931)
- Mieszanie typów łańcuchów znaków (931)
- Wykorzystywanie obiektów bytearray z Pythona 3.0 (i 2.6) (932)
- Wykorzystywanie plików tekstowych i binarnych (935)
- Podstawy plików tekstowych (935)
- Tryby tekstowy i binarny w Pythonie 3.0 (936)
- Brak dopasowania typu i zawartości (938)
- Wykorzystywanie plików Unicode (939)
- Odczyt i zapis Unicode w Pythonie 3.0 (939)
- Obsługa BOM w Pythonie 3.0 (941)
- Pliki Unicode w Pythonie 2.6 (943)
- Inne zmiany narzędzi łańcuchów znaków w Pythonie 3.0 (944)
- Moduł dopasowywania wzorców re (944)
- Moduł danych binarnych struct (945)
- Moduł serializacji obiektów pickle (947)
- Narzędzia do analizy składniowej XML (948)
- Podsumowanie rozdziału (951)
- Sprawdź swoją wiedzę - quiz (952)
- Sprawdź swoją wiedzę - odpowiedzi (952)
- Po co zarządza się atrybutami? (955)
- Wstawianie kodu wykonywanego w momencie dostępu do atrybutów (956)
- Właściwości (957)
- Podstawy (957)
- Pierwszy przykład (958)
- Obliczanie atrybutów (959)
- Zapisywanie właściwości w kodzie za pomocą dekoratorów (960)
- Deskryptory (961)
- Podstawy (962)
- Pierwszy przykład (964)
- Obliczone atrybuty (966)
- Wykorzystywanie informacji o stanie w deskryptorach (967)
- Powiązania pomiędzy właściwościami a deskryptorami (968)
- Metody __getattr__ oraz __getattribute__ (970)
- Podstawy (971)
- Pierwszy przykład (973)
- Obliczanie atrybutów (974)
- Porównanie metod __getattr__ oraz __getattribute__ (975)
- Porównanie technik zarządzania atrybutami (976)
- Przechwytywanie atrybutów wbudowanych operacji (979)
- Powrót do menedżerów opartych na delegacji (983)
- Przykład - sprawdzanie poprawności atrybutów (986)
- Wykorzystywanie właściwości do sprawdzania poprawności (986)
- Wykorzystywanie deskryptorów do sprawdzania poprawności (988)
- Wykorzystywanie metody __getattr__ do sprawdzania poprawności (990)
- Wykorzystywanie metody __getattribute__ do sprawdzania poprawności (991)
- Podsumowanie rozdziału (992)
- Sprawdź swoją wiedzę - quiz (992)
- Sprawdź swoją wiedzę - odpowiedzi (993)
- Czym jest dekorator? (995)
- Zarządzanie wywołaniami oraz instancjami (996)
- Zarządzanie funkcjami oraz klasami (996)
- Wykorzystywanie i definiowanie dekoratorów (997)
- Do czego służą dekoratory? (997)
- Podstawy (998)
- Dekoratory funkcji (998)
- Dekoratory klas (1002)
- Zagnieżdżanie dekoratorów (1004)
- Argumenty dekoratorów (1006)
- Dekoratory zarządzają także funkcjami oraz klasami (1006)
- Kod dekoratorów funkcji (1007)
- Śledzenie wywołań (1007)
- Możliwości w zakresie zachowania informacji o stanie (1009)
- Uwagi na temat klas I - dekorowanie metod klas (1012)
- Mierzenie czasu wywołania (1017)
- Dodawanie argumentów dekoratora (1019)
- Kod dekoratorów klas (1021)
- Klasy singletona (1021)
- Śledzenie interfejsów obiektów (1023)
- Uwagi na temat klas II - zachowanie większej liczby instancji (1027)
- Dekoratory a funkcje zarządzające (1028)
- Do czego służą dekoratory? (raz jeszcze) (1029)
- Bezpośrednie zarządzanie funkcjami oraz klasami (1031)
- Przykład - atrybuty "prywatne" i "publiczne" (1033)
- Implementacja atrybutów prywatnych (1033)
- Szczegóły implementacji I (1035)
- Uogólnienie kodu pod kątem deklaracji atrybutów jako publicznych (1036)
- Szczegóły implementacji II (1038)
- Znane problemy (1039)
- W Pythonie nie chodzi o kontrolę (1043)
- Przykład: Sprawdzanie poprawności argumentów funkcji (1044)
- Cel (1044)
- Prosty dekorator sprawdzający przedziały dla argumentów pozycyjnych (1045)
- Uogólnienie kodu pod kątem słów kluczowych i wartości domyślnych (1047)
- Szczegóły implementacji (1050)
- Znane problemy (1052)
- Argumenty dekoratora a adnotacje funkcji (1053)
- Inne zastosowania - sprawdzanie typów (skoro nalegamy!) (1054)
- Podsumowanie rozdziału (1055)
- Sprawdź swoją wiedzę - quiz (1056)
- Sprawdź swoją wiedzę - odpowiedzi (1056)
- Tworzyć metaklasy czy tego nie robić? (1061)
- Zwiększające się poziomy magii (1062)
- Wady funkcji pomocniczych (1064)
- Metaklasy a dekoratory klas - runda 1. (1066)
- Model metaklasy (1068)
- Klasy są instancjami obiektu type (1068)
- Metaklasy są klasami podrzędnymi klasy type (1070)
- Protokół instrukcji class (1071)
- Deklarowanie metaklas (1071)
- Tworzenie metaklas (1073)
- Prosta metaklasa (1073)
- Dostosowywanie tworzenia do własnych potrzeb oraz inicjalizacja (1074)
- Pozostałe sposoby tworzenia metaklas (1074)
- Instancje a dziedziczenie (1077)
- Przykład - dodawanie metod do klas (1078)
- Ręczne rozszerzanie (1078)
- Rozszerzanie oparte na metaklasie (1080)
- Metaklasy a dekoratory klas - runda 2. (1081)
- Przykład - zastosowanie dekoratorów do metod (1084)
- Ręczne śledzenie za pomocą dekoracji (1084)
- Śledzenie metaklas oraz dekoratorów (1085)
- Zastosowanie dowolnego dekoratora do metod (1086)
- Metaklasy a dekoratory klas - runda 3. (1088)
- Podsumowanie rozdziału (1091)
- Sprawdź swoją wiedzę - quiz (1092)
- Sprawdź swoją wiedzę - odpowiedzi (1092)
- Instalowanie interpretera Pythona (1095)
- Czy Python jest już zainstalowany? (1095)
- Skąd pobrać Pythona (1096)
- Instalacja Pythona (1097)
- Konfiguracja Pythona (1098)
- Zmienne środowiskowe Pythona (1098)
- Jak ustawić opcje konfiguracyjne? (1100)
- Opcje wiersza poleceń Pythona (1103)
- Uzyskanie pomocy (1104)
- Część I Wprowadzenie (1105)
- Część II Typy i operacje (1107)
- Część III Instrukcja i składnia (1112)
- Część IV Funkcje (1114)
- Część V Moduły (1121)
- Część VI Klasy i programowanie zorientowane obiektowo (1125)
- Część VII Wyjątki oraz narzędzia (1132)
Przedmowa (29)
Część I: Wprowadzenie (47)
1. Pytania i odpowiedzi dotyczące Pythona (49)
2. Jak Python wykonuje programy? (69)
3. Jak wykonuje się programy? (81)
Część II: Typy i operacje (117)
4. Wprowadzenie do typów obiektów Pythona (119)
5. Typy liczbowe (149)
6. Wprowadzenie do typów dynamicznych (185)
7. Łańcuchy znaków (197)
8. Listy oraz słowniki (239)
9. Krotki, pliki i pozostałe (267)
Część III: Instrukcje i składnia (299)
10. Wprowadzenie do instrukcji Pythona (301)
11. Przypisania, wyrażenia i wyświetlanie (317)
12. Testy if i reguły składni (345)
13. Pętle while i for (359)
14. Iteracje i składanie list - część 1. (383)
15. Wprowadzenie do dokumentacji (405)
Część IV: Funkcje (423)
16. Podstawy funkcji (425)
17. Zakresy (437)
18. Argumenty (465)
19. Zaawansowane zagadnienia dotyczące funkcji (491)
20. Iteracje i składanie list - część 2. (513)
Część V: Moduły (553)
21. Moduły - wprowadzenie (555)
22. Podstawy tworzenia modułów (569)
23. Pakiety modułów (585)
24. Zaawansowane zagadnienia związane z modułami (607)
Część VI: Klasy i programowanie zorientowane obiektowo (631)
25. Programowanie zorientowane obiektowo (633)
26. Podstawy tworzenia klas (647)
27. Bardziej realistyczny przykład (665)
28. Szczegóły kodu klas (703)
29. Przeciążanie operatorów (727)
30. Projektowanie z użyciem klas (757)
31. Zaawansowane zagadnienia związane z klasami (791)
Część VII: Wyjątki oraz narzędzia (839)
32. Podstawy wyjątków (841)
33. Szczegółowe informacje dotyczące wyjątków (851)
34. Obiekty wyjątków (873)
35. Projektowanie z wykorzystaniem wyjątków (889)
Część VIII: Zagadnienia zaawansowane (909)
36. Łańcuchy znaków Unicode oraz łańcuchy bajtowe (911)
37. Zarządzane atrybuty (955)
38. Dekoratory (995)
39. Metaklasy (1061)
Dodatki (1093)
Dodatek A: Instalacja i konfiguracja (1095)
Dodatek B: Rozwiązania ćwiczeń podsumowujących poszczególne części książki (1105)
Skorowidz (1139)
Oceny i opinie klientów: Python. Wprowadzenie. Wydanie IV Mark Lutz (74)
Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.
(24)
(23)
(13)
(6)
(2)
(6)
Kacper,
Data dodania: 2020-01-13 Ocena: 6 Opinia potwierdzona zakupem
Data dodania: 2020-01-03 Ocena: 6 Opinia potwierdzona zakupem
Data dodania: 2019-11-05 Ocena: 6 Opinia potwierdzona zakupem
Data dodania: 2019-10-06 Ocena: 6 Opinia potwierdzona zakupem
Data dodania: 2019-02-25 Ocena: 6 Opinia potwierdzona zakupem
Jeremiasz Pi,
Data dodania: 2019-01-03 Ocena: 6 Opinia potwierdzona zakupem
Sebastian, programista, seowiec
Data dodania: 2016-05-20 Ocena: 6 Opinia potwierdzona zakupem
Anna,
Data dodania: 2016-01-03 Ocena: 6 Opinia potwierdzona zakupem
Tomasz, programista
Data dodania: 2015-07-29 Ocena: 6 Opinia potwierdzona zakupem
Data dodania: 2014-11-30 Ocena: 6 Opinia potwierdzona zakupem
Programista Python
Data dodania: 2014-08-10 Ocena: 6 Opinia potwierdzona zakupem
Grzegorz Tyburski,
Data dodania: 2014-02-03 Ocena: 6 Opinia niepotwierdzona zakupem
Raven, Programista
Data dodania: 2014-01-19 Ocena: 6 Opinia potwierdzona zakupem
Tomasz, programista C++
Data dodania: 2013-11-06 Ocena: 6 Opinia potwierdzona zakupem
duszek00,
Data dodania: 2013-05-27 Ocena: 6 Opinia potwierdzona zakupem
Data dodania: 2011-11-18 Ocena: 6 Opinia niepotwierdzona zakupem
Data dodania: 2019-11-04 Ocena: 5 Opinia potwierdzona zakupem
Kargul,
Data dodania: 2019-03-11 Ocena: 5 Opinia niepotwierdzona zakupem
Data dodania: 2018-11-30 Ocena: 5 Opinia potwierdzona zakupem
Łukasz Herman, Python Developer
Data dodania: 2018-04-11 Ocena: 5 Opinia niepotwierdzona zakupem
Data dodania: 2016-09-07 Ocena: 5 Opinia potwierdzona zakupem
Data dodania: 2016-08-30 Ocena: 5 Opinia potwierdzona zakupem
Bogumił, Programista/Software Architekt
Data dodania: 2016-02-06 Ocena: 5 Opinia potwierdzona zakupem
Data dodania: 2016-01-29 Ocena: 5 Opinia potwierdzona zakupem
Piotr Bożek, geodeta
Data dodania: 2015-11-05 Ocena: 5 Opinia potwierdzona zakupem
Programista
Data dodania: 2015-11-05 Ocena: 5 Opinia potwierdzona zakupem
Marcin Gradowski, Biolog
Data dodania: 2015-10-23 Ocena: 5 Opinia potwierdzona zakupem
Data dodania: 2015-01-03 Ocena: 5 Opinia potwierdzona zakupem
Adrian K,
Data dodania: 2014-07-07 Ocena: 5 Opinia potwierdzona zakupem
Daniel Z.,
Data dodania: 2014-02-28 Ocena: 5 Opinia potwierdzona zakupem
Data dodania: 2013-04-25 Ocena: 5 Opinia potwierdzona zakupem
gameboy, it
Data dodania: 2013-02-07 Ocena: 5 Opinia potwierdzona zakupem
MS,
Data dodania: 2011-11-03 Ocena: 5 Opinia niepotwierdzona zakupem
Data dodania: 2011-10-26 Ocena: 5 Opinia potwierdzona zakupem
Data dodania: 2021-01-07 Ocena: 4 Opinia potwierdzona zakupem
Data dodania: 2018-09-19 Ocena: 4 Opinia niepotwierdzona zakupem
Data dodania: 2018-07-08 Ocena: 4 Opinia potwierdzona zakupem
Przemek, Handlowiec.
Data dodania: 2016-10-10 Ocena: 4 Opinia niepotwierdzona zakupem
Data dodania: 2015-12-04 Ocena: 4 Opinia niepotwierdzona zakupem
Data dodania: 2015-11-02 Ocena: 4 Opinia niepotwierdzona zakupem
Data dodania: 2015-03-24 Ocena: 4 Opinia potwierdzona zakupem
Data dodania: 2015-01-02 Ocena: 4 Opinia potwierdzona zakupem
adix,
Data dodania: 2012-04-30 Ocena: 4 Opinia niepotwierdzona zakupem
Danny,
Data dodania: 2011-11-02 Ocena: 4 Opinia niepotwierdzona zakupem
Data dodania: 2018-11-16 Ocena: 3 Opinia potwierdzona zakupem
Jakub,
Data dodania: 2018-01-10 Ocena: 3 Opinia potwierdzona zakupem
Data dodania: 2014-07-24 Ocena: 3 Opinia niepotwierdzona zakupem
Rafał, programista
Data dodania: 2013-07-09 Ocena: 3 Opinia potwierdzona zakupem
Mlody_Python,
Data dodania: 2012-05-28 Ocena: 3 Opinia niepotwierdzona zakupem
Cezary,
Data dodania: 2020-01-02 Ocena: 2 Opinia potwierdzona zakupem
Programista Java/PHP
Data dodania: 2016-11-16 Ocena: 1 Opinia potwierdzona zakupem
Mark , nikt
Data dodania: 2016-04-10 Ocena: 1 Opinia niepotwierdzona zakupem
Michal, programista
Data dodania: 2014-10-10 Ocena: 1 Opinia niepotwierdzona zakupem
Oceny i opinie poprzednich wydań
Mateusz,
Data dodania: 2023-01-01 Ocena: 6 Opinia potwierdzona zakupem
Data dodania: 2021-12-16 Ocena: 6 Opinia niepotwierdzona zakupem
Druid,
Data dodania: 2021-09-27 Ocena: 6 Opinia niepotwierdzona zakupem
Data dodania: 2021-09-11 Ocena: 6 Opinia potwierdzona zakupem
Patryk,
Data dodania: 2021-08-10 Ocena: 6 Opinia niepotwierdzona zakupem
Data dodania: 2021-05-04 Ocena: 6 Opinia potwierdzona zakupem
Paweł ,
Data dodania: 2021-01-30 Ocena: 6 Opinia potwierdzona zakupem
Piotr,
Data dodania: 2020-06-04 Ocena: 6 Opinia niepotwierdzona zakupem
Konrad,
Data dodania: 2023-01-15 Ocena: 5 Opinia potwierdzona zakupem
Data dodania: 2022-07-25 Ocena: 5 Opinia potwierdzona zakupem
Piotr,
Data dodania: 2022-01-02 Ocena: 5 Opinia niepotwierdzona zakupem
Data dodania: 2021-07-15 Ocena: 5 Opinia potwierdzona zakupem
Data dodania: 2020-11-08 Ocena: 5 Opinia potwierdzona zakupem
Zbigniew,
Data dodania: 2021-09-22 Ocena: 4 Opinia potwierdzona zakupem
Robert,
Data dodania: 2021-03-22 Ocena: 4 Opinia potwierdzona zakupem
Bartosz,
Data dodania: 2020-11-14 Ocena: 4 Opinia potwierdzona zakupem
Data dodania: 2021-04-09 Ocena: 3 Opinia potwierdzona zakupem
Data dodania: 2022-01-26 Ocena: 2 Opinia potwierdzona zakupem
Marian,
Data dodania: 2023-01-31 Ocena: 1 Opinia niepotwierdzona zakupem
Data dodania: 2021-02-18 Ocena: 1 Opinia potwierdzona zakupem
Data dodania: 2020-06-15 Ocena: 1 Opinia niepotwierdzona zakupem
więcej opinii