Książka Zaawansowany Python otwiera nowy rozdział na blogu! Robiłem ankietę na Instagram i Facebook, w której pytałem czytelników bloga o to, czy na blogu potrzebne są recenzje.

Ponad 100 osób stwierdziło, że tak, więc nie pozostaje mi nic innego jak posłuchać głosu ludu!

I od razu zaczynam z grubej rury, bo książka Zaawansowany Python, to mocna pozycja.

Wprowadzenie

Czytając recenzję innych ludzi, często napotykam na termin książki kultowej. Niewątpliwie jest wiele książek, które są kultowe, ponadczasowe i zasługują na miano obowiązkowych z kanonu lektur technicznych. O omawianej dziś książce takich słów nie mógłbym powiedzieć, ze względu na kilka rzeczy. 

Po pierwsze, jest to książka, której przydatność z czasem przeminie, wejdą do użytku nowe funkcje, zmieni się biblioteka standardowa języka lub po prostu ktoś kiedyś powie, że język Python w wersji trzeciej nie będzie już potrzebny. Nie wydaje mi się, by tak kiedykolwiek się wydarzyło, ale mimo wszystko książka klasyczna musi być odporna na tego typu wahania.

Po drugie, książka Zaawansowany Python, jak sama nazwa wskazuje, jest bardzo techniczna, miejscami musiałem wczytywać się dziesiątki razy i analizować przykłady z dużą dokładnością, by zrozumieć sens działania. Z drugiej strony jest to jej duży plus. Te dwie kwestie wykluczają ją z grona wybitnych.

Nie oznacza to jednak, że jest to książka przeciętna! Ba, jest bardzo dobra, ale dla wąskiego grona osób. Nie polecałbym jej osobom, które Python znają jedynie z kursów i książek z podstawami. Osoby, które nie zderzyły się z realnymi, produkcyjnymi problemami nie wyniosą praktycznie nic z niej, a dodatkowo jeszcze się zrażą i uciekną do innego języka albo nawet branży.

Dla kogo więc ta książka jest? Na 100% dla osób, które z Python chcą związać się na najbliższe lata. Chcą osiągnąć biegłość w tym języku w sposób praktyczny i liczą na pracę nad największymi projektami w branży. Mnogość ciekawych przypadków, pułapek i nieszablonowych pomysłów jest świetnym materiałem do tego, by stać się Fluent Python Developer.

Wróćmy jednak do początku.

Autor

O autorze wiemy dość dużo. Jest to doświadczony programista z Brazylii o imieniu Luciano Ramalho. Jest to współwłaściciel brazylijskiej szkoły programowania i współzałożyciel pierwszego w Brazylii klubu hackerskiego. Z Python związany od 1998 roku, do tego jest członkiem Python Software Foundation, co może nam uświadomić, że jest to osoba, która wychowała się w dobie Pythona i jest to osoba o odpowiedniej wiedzy, by nauczać tego języka.

Luciano aktywnie udziela się w społeczności, występuję na międzynarodowych konferencjach takich jak PyCon czy PyBay. Do pewnego momentu udzielał się również na Stack Overflow.

Dodatkowo na wielki moim zdaniem plus jest to, że książka miała dziesiątki recenzentów. Wiele z tych osób to osoby z najwyższej półki, jeżeli chodzi o Python jak, chociażby Alex Martelli z Google, który jest też bardzo aktywnym użytkownikiem Stack Overflow i rządzi i dzieli tam w kontekście języka Python.

Osoby takie gwarantują największą jakość przykładów i ciekawostek dotyczących zaawansowanych aspektów języka.

Opis ogólny

Na początku tego akapitu wspomnę, o tym, że książka Zaawansowany Python, została wydana przez O’Reilly i przetłumaczona na język polski. Co prawda w kilku miejscach zdarzają się błędy z brakującymi literami czy różne niejasne w naszym języku zwroty, jednak całość jest w mojej opinii dobrze przetłumaczona.

Z mojej perspektywy też ważne było to w czytaniu tej książki, że praktycznie każdy z 6 głównych rozdziałów można czytać jak osobną książkę. To bardzo ułatwia analizowanie przykładów, które często są powtarzane w innym miejscu książki, lecz z naciskiem na inne aspekty języka.

Całość napisana jest z użyciem Python w wersji 3.4, co sugeruje, że książka jest już kilka lat na rynku. Wydana została w roku 2015, ale spokojnie, wszystkie przykłady są zrozumiałe i da się je uruchomić w najnowszej wersji języka. Dodatkowo zapowiedziana jest wersja tegoroczna, ponad 100 stron więcej! Jeżeli chodzi o kompatybilność wstecz, to większość przykładów można również uruchamiać z wersji Python 2.7, o czym sam autor przekonuje.

Szczegóły

Nie byłbym sobą, gdybym trochę nie przestudiował spisu treści. Zawsze, gdy siadam do nowej książki lub zastanawiam się nad jej kupnem, to bardzo wnikliwie ten początkowy fragment książki analizuje.

Jak już wyżej wspomniałem, książka składa się z 6 obszernych rozdziałów, które można potraktować jak osobne książki. Spinając je w całość, dostajemy ponad 750 stron konkretnego programistycznego mięsa!

Część I

Część pierwsza, czyli prolog skupia się na modelu danych Python. Możemy tam zapoznać się z metodami specjalnymi czy uzyskać odpowiedź na pytanie, dlaczego len nie jest metodą. Krótki rozdział i dobre wprowadzenie do książki. 

Część II

Część druga to bardzo wymagający rozdział, gdzie omówione są struktury danych, słowniki i zbiory oraz informacje o tekście i bajtach.

W strukturach danych autor przeprowadza nas przez wyrażenia listowe, krotki, wyrażenia generatora, tablice listy i bardziej szczegółowe informacje. Chociażby używanie + i * z sekwencjami. Następnie przechodzimy do słowników i zbiorów, gdzie czekają na nas wyrażenia słownikowe, ogólne typy odwzorowujące czy wreszcie teoria zbiorów. Rozdział drugi zakończony jest zgłębieniem informacji na temat tekstu. Problemy ze znakami, podstawy bajtów, obsługa plików tekstowych, kodowanie czy omówienie typów str i bytes.

Część III

Kolejny krótki rozdział, ale zawierający bardzo treściwe informacje na temat funkcji jako obiektów, dekoratorów, klas i wzorców projektowych.

Funkcja jako obiekt to często powtarzane sformułowanie w przypadku języka Python. W tym podrozdziale dowiemy się jak traktować funkcję jako obiekt, czym są funkcje anonimowe czy parametry funkcji.

Dalej bardzo krótki rozdział na temat wzorców projektowych w pierwszej klasie, gdzie głównym tematem będzie wzorzec Strategii.

Na zakończenie dekoratory, domknięcia, implementacja prostego dekoratora czy wreszcie ich zagnieżdżenia.

Część IV

Zdecydowanie najdłuższy rozdział w tej książce. Tu autor skupia się na odwołaniach do obiektów, kodowaniu, interfejsach, dziedziczeniu, przeciążeniach czy ogólnie o obiektach pythonowych bardziej szczegółowo. 

W pierwszym podrozdziale mowa jest o płytkich kopiach, parametrach funkcji jako odwołania, zmiennych, znaku równości czy słabych odwołaniach.

W drugim podrozdziale mamy zetknięcie z obiektami pythonowymi, a w nim klasa Vector, konstruktor czy to, w jaki sposób przesłaniać atrybuty klas.

Dalej przechodzimy do kodowania, haszowania i wycinania sekwencji. Rozdział cały jest kontynuacją dywagacji i testów na klasie Vector. 

Dalej przechodzimy do interfejsów, gdzie temat rozwija się również na klasy abstrakcyjne. W mojej ocenie jest to część książki, w której dostajemy najciekawsze przykłady do analizy!

Na zakończenie dwa podrozdziały, w których omawiane jest dziedziczenie, zwłaszcza to wielokrotne oraz przeciążenia operatorów.

Część V

Kolejny długi rozdział, w którym będziemy zajmować się analizą iteratorów i generatorów, zarządzaniem kontekstem i blokiem else, współprogramami i wreszcie współbieżnością.

Przy omawianiu iteratorów autor skupia się na klasie Sentence, następnie przechodzi do funkcji generatora w standardowej bibliotece.

Kolejny podrozdział to ciekawy pomysł na bloki else bez if, czyli zrób to, potem tamto. Dalej płynnie przechodzimy do przykładów współprogramów i tego, jak wyewoluowały one z generatorów. Dodatkowo poruszany jest fajny temat, a mianowicie yield from.

Ostatnie dwa podrozdziały to tak naprawdę temat współbieżności — jeden z futuro, drugi z asyncio. Pobieranie stron WWW na różne sposoby, wątki, pobieranie obrazów, pisanie serwerów czy obsługa błędów to tylko niektóre zagadnienia, z tej jednej z najważniejszych części książki!

Część VI

Ostatnim rozdziałem jest metaprogramowanie. Skupić się tam możemy na atrybutach i właściwościach dynamicznych, deskryptorach atrybutów czy metaprogramowaniu klas.

Pierwszy podrozdział mówi nam o kodowaniu fabryki właściwości, obsługiwaniu usuwania atrybutów czy przekształceniu danych przy pomocy atrybutów dynamicznych.

Dalej przechodzimy do przykładów deskryptora atrybutów, metodach jako deskryptorach czy wskazówek, jak w ogóle deskryptorów używać.

Na koniec autor rozwiewa wątpliwości co do metaklas 101, metody specjalnej __prepare__ czy klasy jako obiektu.

Po tej części następuje posłowie, dodatek w postaci skryptów pomocniczych i żargonie społeczeństwa.

Podsumowanie

Pierwsza recenzja za mną. Było to ciekawe doświadczenie, równie ciekawe, jak czytanie i analiza tej książki. Książka Zaawansowany Python była moim pierwszym wyborem z kilku powodów.

Po pierwsze, bardzo prężnie z tym językiem zacząłem działać, planuję kilka kursów bazujących na trzeciej wersji języka czy wreszcie jest on bardzo przyjazny dla programistów i warto o nim dużo pisać i mówić. Chcę Ci jeszcze powiedzieć, że książka ma fajny smaczek, mianowicie na końcu każdego rozdziału są tak zwane pogadanki, w których autor dyskutuje nad ciekawymi aspektami wokół języka. Między innymi o timbocie, metodach magicznych czy wzorcu Decorator.

Dodam jeszcze, że wszystkie przykłady opisywane w książce są dostępne pod adresem https://github.com/fluentpython/example-code.

W mojej opinii książka zasługuje na ocenę 8/10.

Pamiętaj, że jest to tylko moja ocena!

PS. Będę wdzięczny za komentarze pod tym postem!

PS2. Czeka też na Ciebie prezent. Wystarczy, że zapiszesz się na Newsletter poniżej!

PS3. Dołącz do naszej grupy na Facebook!


Subskrybuj

Zapisz się na Newsletter, odbierz NAGRODĘ w postaci e-booka z 10 omówionymi algorytmami pojawiającymi się w pytaniach podczas REKRUTACJI..

Dodatkowo otrzymuj co niedzielę informacje na temat nowych wpisów, wiadomości ze świata IT i matematyki oraz ciekawych wydarzeniach. Nie przegap i dołącz już dziś do 920 osób!.
Autor

👨‍💻 .NET and Python programming passionate 🏦 Digtial Banking Solutions 🎓 Student 📊 Psychology 📚 Bookworm 🏠 Warsaw

Napisz komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.