Facebook - konwersja
  • promocja

Python. Programowanie funkcyjne - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
26 marca 2019
Format ebooka:
EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.

Python. Programowanie funkcyjne - ebook

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!

Spis treści


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

Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-283-5072-4
Rozmiar pliku: 3,7 MB

BESTSELLERY

Kategorie: