Kategorie
Ebooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komputer w biurze
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Multimedialne szkolenia
- Nieruchomości
- Perswazja i NLP
- Podatki
- Polityka społeczna
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Raporty, analizy
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
E-prasa
- Architektura i wnętrza
- Biznes i Ekonomia
- Dom i ogród
- E-Biznes
- Finanse
- Finanse osobiste
- Firma
- Fotografia
- Informatyka
- Kadry i płace
- Komputery, Excel
- Księgowość
- Kultura i literatura
- Naukowe i akademickie
- Ochrona środowiska
- Opiniotwórcze
- Oświata
- Podatki
- Podróże
- Psychologia
- Religia
- Rolnictwo
- Rynek książki i prasy
- Transport i Spedycja
- Zdrowie i uroda
-
Historia
-
Informatyka
- Aplikacje biurowe
- Bazy danych
- Bioinformatyka
- Biznes IT
- CAD/CAM
- Digital Lifestyle
- DTP
- Elektronika
- Fotografia cyfrowa
- Grafika komputerowa
- Gry
- Hacking
- Hardware
- IT w ekonomii
- Pakiety naukowe
- Podręczniki szkolne
- Podstawy komputera
- Programowanie
- Programowanie mobilne
- Serwery internetowe
- Sieci komputerowe
- Start-up
- Systemy operacyjne
- Sztuczna inteligencja
- Technologia dla dzieci
- Webmasterstwo
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poemat
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Podręczniki szkolne
-
Popularnonaukowe i akademickie
- Archeologia
- Bibliotekoznawstwo
- Filmoznawstwo
- Filologia
- Filologia polska
- Filozofia
- Finanse i bankowość
- Geografia
- Gospodarka
- Handel. Gospodarka światowa
- Historia i archeologia
- Historia sztuki i architektury
- Kulturoznawstwo
- Lingwistyka
- Literaturoznawstwo
- Logistyka
- Matematyka
- Medycyna
- Nauki humanistyczne
- Pedagogika
- Pomoce naukowe
- Popularnonaukowa
- Pozostałe
- Psychologia
- Socjologia
- Teatrologia
- Teologia
- Teorie i nauki ekonomiczne
- Transport i spedycja
- Wychowanie fizyczne
- Zarządzanie i marketing
-
Poradniki
-
Poradniki do gier
-
Poradniki zawodowe i specjalistyczne
-
Prawo
- BHP
- Historia
- Kodeks drogowy. Prawo jazdy
- Nauki prawne
- Ochrona zdrowia
- Ogólne, kompendium wiedzy
- Podręczniki akademickie
- Pozostałe
- Prawo budowlane i lokalowe
- Prawo cywilne
- Prawo finansowe
- Prawo gospodarcze
- Prawo gospodarcze i handlowe
- Prawo karne
- Prawo karne. Przestępstwa karne. Kryminologia
- Prawo międzynarodowe
- Prawo międzynarodowe i zagraniczne
- Prawo ochrony zdrowia
- Prawo oświatowe
- Prawo podatkowe
- Prawo pracy i ubezpieczeń społecznych
- Prawo publiczne, konstytucyjne i administracyjne
- Prawo rodzinne i opiekuńcze
- Prawo rolne
- Prawo socjalne, prawo pracy
- Prawo Unii Europejskiej
- Przemysł
- Rolne i ochrona środowiska
- Słowniki i encyklopedie
- Zamówienia publiczne
- Zarządzanie
-
Przewodniki i podróże
- Afryka
- Albumy
- Ameryka Południowa
- Ameryka Środkowa i Północna
- Australia, Nowa Zelandia, Oceania
- Austria
- Azja
- Bałkany
- Bliski Wschód
- Bułgaria
- Chiny
- Chorwacja
- Czechy
- Dania
- Egipt
- Estonia
- Europa
- Francja
- Góry
- Grecja
- Hiszpania
- Holandia
- Islandia
- Litwa
- Łotwa
- Mapy, Plany miast, Atlasy
- Miniprzewodniki
- Niemcy
- Norwegia
- Podróże aktywne
- Polska
- Portugalia
- Pozostałe
- Rosja
- Rumunia
- Słowacja
- Słowenia
- Szwajcaria
- Szwecja
- Świat
- Turcja
- Ukraina
- Węgry
- Wielka Brytania
- Włochy
-
Psychologia
- Filozofie życiowe
- Kompetencje psychospołeczne
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Audiobooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Nieruchomości
- Perswazja i NLP
- Podatki
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
Historia
-
Informatyka
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Popularnonaukowe i akademickie
-
Poradniki
-
Poradniki zawodowe i specjalistyczne
-
Prawo
-
Przewodniki i podróże
-
Psychologia
- Filozofie życiowe
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Kursy video
-
Bazy danych
-
Big Data
-
Biznes, ekonomia i marketing
-
Cyberbezpieczeństwo
-
Data Science
-
DevOps
-
Dla dzieci
-
Elektronika
-
Grafika/Wideo/CAX
-
Gry
-
Microsoft Office
-
Narzędzia programistyczne
-
Programowanie
-
Rozwój osobisty
-
Sieci komputerowe
-
Systemy operacyjne
-
Testowanie oprogramowania
-
Urządzenia mobilne
-
UX/UI
-
Web development
-
Zarządzanie
Podcasty
- Ebooki
- Programowanie
- Python
- Python. Programowanie funkcyjne
Szczegóły ebooka
Zgodnie z paradygmatem programowania funkcyjnego największy nacisk należy kłaść na stałe i funkcje. Polega to na konstruowaniu funkcji oraz na obliczaniu wartości wyrażeń. W ten sposób otrzymuje się kod odporny na błędy. Python nie jest w pełni funkcyjnym językiem programowania, jednak pozwala na taki sposób pisania programów. Dzięki temu umożliwia tworzenie zwięzłego i eleganckiego kodu. Na przykład stosowanie wyrażeń generatorowych w Pythonie sprawia, że tworzone programy działają szybciej, ponieważ zużywają mniej zasobów. Niezależnie więc od stosowanego paradygmatu warto zapożyczyć pewne elementy programowania funkcyjnego i wykorzystać je do tworzenia ekspresyjnych i zwięzłych aplikacji w Pythonie.
To znakomity podręcznik dla programistów, którzy chcą wykorzystać techniki i wzorce projektowe z funkcyjnych języków programowania, aby tworzyć w Pythonie zwięzłe, eleganckie i ekspresyjne programy - z czytelnym i łatwym w utrzymaniu kodem. Zawiera ogólny przegląd koncepcji funkcyjnych oraz wyjaśnia tak istotne pojęcia jak funkcje pierwszej klasy, funkcje wyższego rzędu, funkcje czyste, leniwe wartościowanie i wiele innych. Wnikliwie omawia sposób korzystania z tych funkcji w Pythonie 3.6, a także techniki przygotowywania i eksploracji danych. Ponadto pokazuje, w jaki sposób standardowa biblioteka Pythona pasuje do funkcyjnego modelu programowania. Co ważne, w książce znalazło się kilka przykładów prezentujących w praktyce opisane koncepcje.
W książce między innymi:
- podstawy modelu programowania funkcyjnego
- działania na kolekcjach danych i przetwarzanie krotek
- projektowanie dekoratorów
- biblioteka PyMonad
- usługi sieciowe a programowanie funkcyjne
Python: kod funkcyjny i funkcjonalny!
O autorze 9
O recenzencie 10
Przedmowa 9
Rozdział 1. Zrozumieć programowanie funkcyjne 17
- Paradygmat programowania 18
- Podział paradygmatu proceduralnego 19
- Korzystanie z paradygmatu funkcyjnego 20
- Korzystanie z funkcyjnych hybryd 22
- Tworzenie obiektu 23
- Stos żółwi 24
- Klasyczny przykład programowania funkcyjnego 25
- Eksploracyjna analiza danych 28
- Podsumowanie 29
Rozdział 2. Podstawowe pojęcia programowania funkcyjnego 31
- Funkcje pierwszej klasy 32
- Czyste funkcje 32
- Funkcje wyższego rzędu 33
- Dane niemutowalne 34
- Wartościowanie ścisłe i nieścisłe 36
- Rekurencja zamiast jawnego stanu pętli 37
- Funkcyjne systemy typów 41
- Znajome terytorium 41
- Pojęcia zaawansowane 42
- Podsumowanie 43
Rozdział 3. Funkcje, iteratory i generatory 45
- Pisanie czystych funkcji 46
- Funkcje jako obiekty pierwszej klasy 48
- Korzystanie z łańcuchów znaków 49
- Używanie krotek i krotek nazwanych 50
- Korzystanie z wyrażeń generatorowych 52
- Odkrywanie ograniczeń generatorów 54
- Łączenie wyrażeń generatorowych 56
- Czyszczenie surowych danych za pomocą funkcji generatorowych 56
- Korzystanie z list, słowników i zbiorów 58
- Korzystanie z mapowań stanowych 61
- Wykorzystanie modułu bisect do tworzenia mapowania 63
- Używanie stanowych zbiorów 64
- Podsumowanie 65
Rozdział 4. Praca z kolekcjami 67
- Przegląd rodzajów funkcji 68
- Praca z obiektami iterowalnymi 68
- Parsowanie pliku XML 69
- Parsowanie pliku na wyższym poziomie 71
- Tworzenie par elementów z sekwencji 73
- Jawne użycie funkcji iter() 76
- Rozszerzanie prostej pętli 77
- Stosowanie wyrażeń generatorowych do funkcji skalarnych 80
- Wykorzystanie funkcji any() i all() jako redukcji 81
- Używanie funkcji len() i sum() 83
- Używanie sum i zliczeń w obliczeniach statystycznych 84
- Korzystanie z funkcji zip() do tworzenia struktury i spłaszczania sekwencji 87
- Rozpakowywanie spakowanej sekwencji 88
- Spłaszczanie sekwencji 89
- Nadawanie struktury płaskim sekwencjom 90
- Tworzenie struktury płaskich sekwencji - podejście alternatywne 92
- Wykorzystanie funkcji reverse() do zmiany kolejności elementów 93
- Wykorzystanie funkcji enumerate() w celu uwzględnienia numeru porządkowego 94
- Podsumowanie 94
Rozdział 5. Funkcje wyższego rzędu 97
- Wykorzystanie funkcji max() i min() do wyszukiwania ekstremów 98
- Korzystanie z formatu wyrażeń lambda w Pythonie 101
- Wyrażenia lambda i rachunek lambda 103
- Korzystanie z funkcji map() w celu zastosowania funkcji do kolekcji 103
- Wykorzystanie wyrażeń lambda i funkcji map() 104
- Użycie funkcji map() w odniesieniu do wielu sekwencji 105
- Wykorzystanie funkcji filter() do przekazywania lub odrzucania danych 107
- Użycie funkcji filter() do identyfikacji wartości odstających 108
- Funkcja iter() z wartością "strażnika" 109
- Wykorzystanie funkcji sorted() do porządkowania danych 110
- Pisanie funkcji wyższego rzędu 111
- Pisanie mapowań i filtrów wyższego rzędu 112
- Rozpakowywanie danych podczas mapowania 113
- Opakowywanie dodatkowych danych podczas mapowania 115
- Spłaszczanie danych podczas mapowania 116
- Strukturyzacja danych podczas filtrowania 118
- Pisanie funkcji generatorowych 119
- Budowanie funkcji wyższego rzędu z wykorzystaniem obiektów wywoływalnych 121
- Zapewnienie dobrego projektu funkcyjnego 123
- Przegląd wybranych wzorców projektowych 124
- Podsumowanie 125
Rozdział 6. Rekurencje i redukcje 127
- Proste rekurencje numeryczne 128
- Implementacja optymalizacji ogonowej 129
- Pozostawienie rekurencji bez zmian 130
- Obsługa trudnego przypadku optymalizacji ogonowej 131
- Przetwarzanie kolekcji za pomocą rekurencji 132
- Optymalizacja ogonowa dla kolekcji 133
- Redukcje i składanie kolekcji z wielu elementów w jeden element 134
- Redukcja grupowania - z wielu elementów do mniejszej liczby 136
- Budowanie mapowania za pomocą metody Counter 136
- Budowanie mapowania przez sortowanie 137
- Grupowanie lub podział danych według wartości klucza 139
- Pisanie bardziej ogólnych redukcji grupujących 142
- Pisanie redukcji wyższego rzędu 143
- Pisanie parserów plików 144
- Podsumowanie 150
Rozdział 7. Dodatkowe techniki przetwarzania krotek 153
- Używanie krotek do zbierania danych 154
- Używanie krotek nazwanych do zbierania danych 156
- Budowanie nazwanych krotek za pomocą konstruktorów funkcyjnych 159
- Unikanie stanowych klas dzięki wykorzystaniu rodzin krotek 160
- Przypisywanie rang statystycznych 163
- Opakowanie zamiast zmiany stanu 165
- Wielokrotne opakowanie zamiast zmian stanu 166
- Obliczanie korelacji rangowej Spearmana 167
- Polimorfizm i dopasowywanie typów ze wzorcami 169
- Podsumowanie 174
Rozdział 8. Moduł itertools 175
- Praca z iteratorami nieskończonymi 176
- Liczenie za pomocą count() 176
- Zliczanie z wykorzystaniem argumentów zmiennoprzecinkowych 177
- Wielokrotne iterowanie cyklu za pomocą funkcji cycle() 179
- Powtarzanie pojedynczej wartości za pomocą funkcji repeat() 181
- Używanie iteratorów skończonych 182
- Przypisywanie liczb za pomocą funkcji enumerate() 182
- Obliczanie sum narastających za pomocą funkcji accumulate() 185
- Łączenie iteratorów za pomocą funkcji chain() 186
- Podział iteratora na partycje za pomocą funkcji groupby() 187
- Scalanie obiektów iterowalnych za pomocą funkcji zip_longest() i zip() 188
- Filtrowanie z wykorzystaniem funkcji compress() 189
- Zbieranie podzbiorów za pomocą funkcji islice() 190
- Filtrowanie stanowe z wykorzystaniem funkcji dropwhile() i takewhile() 191
- Dwa podejścia do filtrowania za pomocą funkcji filterfalse() i filter() 192
- Zastosowanie funkcji do danych z wykorzystaniem funkcji starmap() i map() 193
- Klonowanie iteratorów za pomocą funkcji tee() 194
- Receptury modułu itertools 195
- Podsumowanie 197
Rozdział 9. Dodatkowe techniki itertools 199
- Wyliczanie iloczynu kartezjańskiego 200
- Redukowanie iloczynu 200
- Obliczanie odległości 202
- Uzyskanie wszystkich pikseli i wszystkich kolorów 204
- Analiza wydajności 205
- Przeformowanie problemu 207
- Łączenie dwóch transformacji 207
- Permutacje zbioru wartości 209
- Generowanie wszystkich kombinacji 210
- Receptury 212
- Podsumowanie 213
Rozdział 10. Moduł functools 215
- Narzędzia przetwarzania funkcji 216
- Memoizacja wcześniejszych wyników za pomocą dekoratora lru_cache 216
- Definiowanie klas z dekoratorem total_ordering 218
- Definiowanie klas liczbowych 221
- Stosowanie argumentów częściowych za pomocą funkcji partial() 222
- Redukcja zbiorów danych za pomocą funkcji reduce() 223
- Łączenie funkcji map() i reduce() 224
- Korzystanie z funkcji reduce() i partial() 226
- Użycie funkcji map() i reduce() do oczyszczania surowych danych 226
- Korzystanie z funkcji reduce() i partial() 227
- Podsumowanie 230
Rozdział 11. Techniki projektowania dekoratorów 231
- Dekoratory jako funkcje wyższego rzędu 231
- Korzystanie z funkcji update_wrapper() z modułu functools 235
- Zagadnienia przekrojowe 236
- Funkcje złożone 236
- Wstępne przetwarzanie nieprawidłowych danych 238
- Dekoratory z parametrami 239
- Implementacja bardziej złożonych dekoratorów 242
- Kwestie złożonego projektu 243
- Podsumowanie 246
Rozdział 12. Moduły multiprocessing i threading 247
- Programowanie funkcyjne a współbieżność 248
- Co naprawdę oznacza współbieżność? 248
- Warunki brzegowe 249
- Współdzielenie zasobów za pomocą procesów lub wątków 249
- Jak uzyskać największe korzyści? 250
- Korzystanie z pul wieloprocesowych i zadań 251
- Przetwarzanie wielu dużych plików 252
- Parsowanie plików logu - pobieranie wierszy 253
- Parsowanie wierszy logu do postaci obiektów namedtuple 254
- Parsowanie dodatkowych pól obiektu Access 256
- Filtrowanie szczegółów dostępu 259
- Analiza szczegółów dostępu 261
- Pełny proces analizy 262
- Korzystanie z puli wieloprocesowej w celu przetwarzania równoległego 263
- Korzystanie z funkcji apply() do wykonywania pojedynczych żądań 265
- Korzystanie z funkcji map_async(), starmap_async() i apply_async() 265
- Bardziej złożone architektury przetwarzania wieloprocesowego 266
- Korzystanie z modułu concurrent.futures 267
- Korzystanie z pul wątków modułu concurrent.futures 267
- Korzystanie z modułów threading i queue 268
- Projektowanie współbieżnego przetwarzania 268
- Podsumowanie 270
Rozdział 13. Wyrażenia warunkowe i moduł operator 271
- Ocena wyrażeń warunkowych 272
- Wykorzystywanie nieścisłych reguł słownikowych 273
- Filtrowanie wyrażeń warunkowych zwracających True 274
- Wyszukiwanie pasującego wzorca 275
- Używanie modułu operator zamiast wyrażeń lambda 276
- Pobieranie wartości nazwanych atrybutów podczas korzystania z funkcji wyższego rzędu 278
- Wykorzystanie funkcji starmap z operatorami 279
- Redukcje z wykorzystaniem funkcji modułu operator 281
- Podsumowanie 282
Rozdział 14. Biblioteka PyMonad 283
- Pobieranie i instalacja modułu pymonad 284
- Kompozycja funkcyjna i rozwijanie funkcji 284
- Korzystanie z rozwijanych funkcji wyższego rzędu 286
- Rozwijanie funkcji w trudny sposób 288
- Kompozycja funkcyjna i operator * z biblioteki pymonad 288
- Funktory zwykłe i aplikatywne 290
- Korzystanie z leniwego funktora List() 291
- Funkcja bind() i operator >> 294
- Implementacja symulacji za pomocą monad 295
- Dodatkowe własności biblioteki pymonad 298
- Podsumowanie 299
Rozdział 15. Podejście funkcyjne do usług sieciowych 301
- Model HTTP żądanie-odpowiedź 302
- Wstrzykiwanie stanu za pomocą plików cookie 303
- Serwer o projekcie funkcyjnym 304
- Szczegóły widoku funkcyjnego 304
- Zagnieżdżanie usług 305
- Standard WSGI 306
- Zgłaszanie wyjątków podczas przetwarzania WSGI 309
- Praktyczne aplikacje WSGI 310
- Definiowanie usług sieciowych jako funkcji 311
- Tworzenie aplikacji WSGI 312
- Pobieranie surowych danych 314
- Stosowanie filtra 315
- Serializowanie wyników 316
- Serializacja danych w formatach JSON lub CSV 317
- Serializacja danych do formatu XML 318
- Serializacja danych do formatu HTML 319
- Monitorowanie użycia 320
- Podsumowanie 322
Rozdział 16. Optymalizacje i ulepszenia 323
- Memoizacja i buforowanie 324
- Specjalizacja memoizacji 325
- Ogonowe optymalizacje rekurencji 327
- Optymalizacja pamięci 328
- Optymalizacja dokładności 329
- Redukcja dokładności w zależności od wymagań odbiorców 329
- Studium przypadku - podejmowanie decyzji na podstawie testu zgodności chi-kwadrat 330
- Filtrowanie i redukcja surowych danych z wykorzystaniem obiektu Counter 332
- Odczyt podsumowanych danych 333
- Obliczanie sum za pomocą obiektu Counter 334
- Obliczanie prawdopodobieństw na podstawie obiektów Counter 335
- Obliczanie oczekiwanych wartości i wyświetlanie tabeli krzyżowej 337
- Obliczanie wartości chi-kwadrat 339
- Obliczanie progu wartości chi-kwadrat 339
- Obliczanie niekompletnej funkcji gamma 340
- Obliczanie kompletnej funkcji gamma 343
- Obliczanie szans na losową dystrybucję 344
- Funkcyjne wzorce projektowe 346
- Podsumowanie 348
Skorowidz 349
- Tytuł: Python. Programowanie funkcyjne
- Autor: Steven F. Lott
- Tytuł oryginału: Functional Python Programming: Discover the power of functional programming, generator functions, lazy evaluation, the b
- Tłumaczenie: Radosław Meryk
- ISBN: 978-83-283-5072-4, 9788328350724
- Data wydania: 2019-03-26
- Format: Ebook
- Identyfikator pozycji: pythpf
- Wydawca: Helion