Facebook - konwersja
Pobierz fragment

Programowanie funkcyjne w Pythonie. Jak pisać zwięzły, wydajny i ekspresywny kod - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
24 października 2023
Format ebooka:
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.
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.
Pobierz fragment
89,00

Programowanie funkcyjne w Pythonie. Jak pisać zwięzły, wydajny i ekspresywny kod - ebook

Mimo że Python nie jest typowym językiem programowania funkcyjnego, umożliwia pisanie kodu w sposób właściwy dla tego podejścia. W efekcie można tworzyć zwięzłe i eleganckie programy, które działają szybciej i zużywają mniej zasobów. Jeśli uważasz, że te argumenty uzasadniają zapoznanie się z funkcyjnym podejściem do programowania w Pythonie, to ta książka jest dla Ciebie.

Dzięki temu praktycznemu podręcznikowi zrozumiesz, kiedy i dlaczego warto zastosować myślenie funkcyjne, a także jak korzystać z technik funkcyjnych w różnych scenariuszach. Dowiesz się również, jakie narzędzia i biblioteki przeznaczone do tego celu są dostępne w Pythonie i jak używać wyrażeń generatorowych, list składanych i dekoratorów. W tym wydaniu znalazły się nowe rozdziały dotyczące złożonych obiektów bezstanowych, funkcji kombinatorycznych i pakietu toolz, zawierającego zbiór modułów wspomagających pisanie programów funkcyjnych. Umieszczono tu ponadto sporo ciekawych przykładów, dotyczących choćby eksploracyjnej analizy danych i ich czyszczenia.

W książce między innymi:

  • najciekawsze biblioteki i wbudowane funkcje wyższego rzędu w Pythonie
  • tworzenie funkcji generatorowych i leniwe wartościowanie
  • implementacja dekoratorów do kompozycji funkcyjnej
  • podpowiedzi typów w Pythonie
  • obsługa współbieżności i implementacja usług sieciowych
  • biblioteka PyMonad i tworzenie symulacji z obsługą stanów

Chcesz tworzyć wydajny kod? Naucz się programowania funkcyjnego!

Spis treści

Słowo wstępne

O autorze

O recenzentach

Przedmowa

Rozdział 1. Zrozumieć programowanie funkcyjne

  • Funkcyjny styl programowania
  • Podobieństwa i różnice pomiędzy stylami proceduralnym i funkcyjnym
    • Korzystanie z paradygmatu funkcyjnego
    • Korzystanie z funkcyjnych hybryd
    • Stos żółwi
  • Klasyczny przykład programowania funkcyjnego
  • Eksploracyjna analiza danych
  • Podsumowanie
  • Ćwiczenia
    • Konwersja imperatywnego algorytmu na kod funkcyjny
    • Konwersja obliczeń krokowych na kod funkcyjny
    • Popraw funkcję sqrt()
    • Etapy czyszczenia danych
    • Optymalizacja kodu funkcyjnego (zaawansowane)

Rozdział 2. Podstawowe pojęcia programowania funkcyjnego

  • Funkcje jako obiekty pierwszej klasy
    • Czyste funkcje
    • Funkcje wyższego rzędu
  • Dane niemutowalne
  • Wartościowanie ścisłe i nieścisłe
  • Wartościowanie leniwe i zachłanne
  • Rekurencja zamiast jawnego stanu pętli
  • Funkcyjne systemy typów
  • Znajome terytorium
  • Pojęcia zaawansowane
  • Podsumowanie
  • Ćwiczenia
    • Zastosowanie funkcji map() do sekwencji wartości
    • Funkcje czy wyrażenia lambda?
    • Zoptymalizuj rekurencję

Rozdział 3. Funkcje, iteratory i generatory

  • Pisanie czystych funkcji
  • Funkcje jako obiekty pierwszej klasy
  • Korzystanie z łańcuchów znaków
  • Używanie krotek i krotek nazwanych
  • Korzystanie z wyrażeń generatorowych
    • Odkrywanie ograniczeń generatorów
    • Łączenie wyrażeń generatorowych
  • Czyszczenie surowych danych za pomocą funkcji generatorowych
  • Stosowanie generatorów do wbudowanych kolekcji
    • Generatory dla list, słowników i zbiorów
    • Korzystanie z mapowań stanowych
    • Wykorzystanie modułu bisect do tworzenia mapowania
    • Używanie stanowych zbiorów
  • Podsumowanie
  • Ćwiczenia
    • Przepisz funkcję some_function()
    • Alternatywna definicja klasy Mersenne
    • Alternatywy implementacji algorytmów
    • Mapowanie i filtrowanie
    • Słowniki składane
    • Oczyszczanie surowych danych

Rozdział 4. Praca z kolekcjami

  • Przegląd rodzajów funkcji
  • Praca z obiektami iterowalnymi
    • Parsowanie pliku XML
    • Parsowanie pliku na wyższym poziomie
    • Tworzenie par elementów z sekwencji
    • Jawne użycie funkcji iter()
    • Rozszerzanie iteracji
    • Stosowanie wyrażeń generatorowych do funkcji skalarnych
  • Wykorzystanie funkcji any() i all() jako redukcji
  • Używanie funkcji len() i sum() dla kolekcji
    • Używanie sum i zliczeń w obliczeniach statystycznych
  • Korzystanie z funkcji zip() do tworzenia struktury i spłaszczania sekwencji
    • Rozpakowywanie spakowanej sekwencji
    • Spłaszczanie sekwencji
    • Nadawanie struktury płaskim sekwencjom
    • Tworzenie struktury płaskich sekwencji - podejście alternatywne
  • Wykorzystanie funkcji sorted() i reversed() do zmiany kolejności elementów
  • Wykorzystanie funkcji enumerate() w celu uwzględnienia numeru porządkowego
  • Podsumowanie
  • Ćwiczenia
    • Liczby palindromiczne
    • Zestaw kart w ręku
    • Zamień funkcję legs() na pairwise()
    • Rozszerz rozwiązanie z funkcją legs(), aby uwzględnić przetwarzanie par

Rozdział 5. Funkcje wyższego rzędu

  • Wykorzystanie funkcji max() i min() do wyszukiwania ekstremów
    • Korzystanie z formatu wyrażeń lambda w Pythonie
    • Wyrażenia lambda i rachunek lambda
  • Korzystanie z funkcji map() w celu zastosowania funkcji do kolekcji
    • Wykorzystanie wyrażeń lambda i funkcji map()
    • Użycie funkcji map() w odniesieniu do wielu sekwencji
  • Wykorzystanie funkcji filter() do przekazywania lub odrzucania danych
    • Użycie funkcji filter() do identyfikacji wartości odstających
  • Funkcja iter() z wartością "strażnika"
  • Wykorzystanie funkcji sorted() do porządkowania danych
  • Pisanie funkcji wyższego rzędu - przegląd
  • Pisanie mapowań i filtrów wyższego rzędu
    • Rozpakowywanie danych podczas mapowania
    • Opakowywanie dodatkowych danych podczas mapowania
    • Spłaszczanie danych podczas mapowania
    • Strukturyzacja danych podczas filtrowania
  • Budowanie funkcji wyższego rzędu z wykorzystaniem obiektów wywoływalnych
    • Zapewnienie dobrego projektu funkcyjnego
  • Przegląd wybranych wzorców projektowych
  • Podsumowanie
  • Ćwiczenia
    • Klasyfikacja stanu
    • Klasyfikacja stanu, część II
    • Optymalizacja parsera plików

Rozdział 6. Rekurencje i redukcje

  • Proste rekurencje numeryczne
    • Implementacja ręcznej optymalizacji ogonowej
    • Pozostawienie rekurencji bez zmian
    • Obsługa trudnego przypadku optymalizacji ogonowej
    • Przetwarzanie kolekcji za pomocą rekurencji
    • Optymalizacja ogonowa dla kolekcji
    • Używanie operatora przypisania (czasami zwanego morsem) w rekurencjach
  • Redukcje i składanie kolekcji z wielu elementów w jeden element
    • Optymalizacja wywołań ogonowych za pomocą kolejek dwukierunkowych
  • Redukcja grupowania - z wielu elementów do mniejszej liczby
    • Budowanie mapowania za pomocą metody Counter
    • Budowanie mapowania przez sortowanie
    • Grupowanie lub podział danych według wartości klucza
    • Pisanie bardziej ogólnych redukcji grupujących
    • Pisanie redukcji wyższego rzędu
    • Pisanie parserów plików
  • Podsumowanie
  • Ćwiczenia
    • Wielokrotna rekurencja i buforowanie
    • Refaktoryzacja funkcji all_print()
    • Parsowanie plików CSV
    • Klasyfikacja stanu, część III
    • Dane silnika Diesla

Rozdział 7. Złożone obiekty bezstanowe

  • Używanie krotek do zbierania danych
  • Używanie obiektów NamedTuple do zbierania danych
  • Używanie do zbierania danych dekoratora dataclass z parametrem frozen
  • Inicjalizacja złożonych obiektów i obliczenia właściwości
  • Używanie modułu pyrsistent do zbierania danych
  • Unikanie stanowych klas dzięki wykorzystaniu rodzin krotek
    • Obliczanie korelacji rangowej Spearmana
  • Polimorfizm i dopasowywanie typów z wzorcami
  • Podsumowanie
  • Ćwiczenia
    • Zamrożone słowniki
    • Sekwencje podobne do słowników
    • Modyfikacja funkcji rank_xy() w celu wykorzystywania natywnych typów
    • Popraw funkcję rank_corr()
    • Modyfikacja funkcji legs() w celu wykorzystania modułu pyrsistent

Rozdział 8. Moduł itertools

  • Praca z iteratorami nieskończonymi
    • Liczenie za pomocą count()
    • Zliczanie z wykorzystaniem argumentów zmiennoprzecinkowych
    • Wielokrotne iterowanie cyklu za pomocą funkcji cycle()
    • Powtarzanie pojedynczej wartości za pomocą funkcji repeat()
  • Używanie iteratorów skończonych
    • Przypisywanie liczb za pomocą funkcji enumerate()
    • Obliczanie sum narastających za pomocą funkcji accumulate()
    • Łączenie iteratorów za pomocą funkcji chain()
    • Podział iteratora na partycje za pomocą funkcji groupby()
    • Scalanie obiektów iterowalnych za pomocą funkcji zip_longest() i zip()
    • Tworzenie par za pomocą funkcji pairwise()
    • Filtrowanie z wykorzystaniem funkcji compress()
    • Zbieranie podzbiorów za pomocą funkcji islice()
    • Filtrowanie stanowe z wykorzystaniem funkcji dropwhile() i takewhile()
    • Dwa podejścia do filtrowania za pomocą funkcji filterfalse() i filter()
    • Zastosowanie funkcji do danych z wykorzystaniem funkcji starmap() i map()
  • Klonowanie iteratorów za pomocą funkcji tee()
  • Receptury modułu itertools
  • Podsumowanie
  • Ćwiczenia
    • Zoptymalizuj funkcję find_first()
    • Porównaj rozwiązanie z rozdziału 4. z recepturą itertools.pairwise()
    • Porównaj rozwiązanie z rozdziału 4. z recepturą itertools.tee()
    • Podział zestawu danych do celów szkolenia i testowania
    • Szeregowanie rang

Rozdział 9. Moduł itertools dla kombinatoryków - permutacje i kombinacje

  • Wyliczanie iloczynu kartezjańskiego
  • Redukowanie iloczynu
    • Obliczanie odległości
    • Uzyskanie wszystkich pikseli i wszystkich kolorów
  • Poprawa wydajności
    • Przeformowanie problemu
    • Łączenie dwóch transformacji
  • Permutacje zbioru wartości
  • Generowanie wszystkich kombinacji
    • Kombinacje z powtórzeniami
  • Receptury
  • Podsumowanie
  • Ćwiczenia
    • Alternatywne obliczenia odległości
    • Rzeczywista dziedzina wartości kolorów pikseli
    • Punktacja ręki w grze Cribbage

Rozdział 10. Moduł functools

  • Narzędzia przetwarzania funkcji
  • Memoizacja wcześniejszych wyników za pomocą dekoratora cache
  • Definiowanie klas z dekoratorem total_ordering
  • Stosowanie argumentów częściowych za pomocą funkcji partial()
  • Redukcja zbiorów danych za pomocą funkcji reduce()
    • Łączenie funkcji map() i reduce()
    • Korzystanie z funkcji reduce() i partial()
    • Użycie funkcji map() i reduce() do oczyszczania surowych danych
    • Korzystanie z funkcji groupby() i reduce()
    • Unikanie problemów z funkcją reduce()
  • Obsługa wielu typów za pomocą funkcji singledispatch
  • Podsumowanie
  • Ćwiczenia
    • Porównanie funkcji string.join() i reduce()
    • Rozszerzenie funkcji comma_fix()
    • Modyfikacja funkcji clean_sum()

Rozdział 11. Pakiet toolz

  • Funkcja starmap z pakietu itertools
  • Redukcje z wykorzystaniem funkcji modułu operator
  • Korzystanie z pakietu toolz
    • Wybrane funkcje modułu itertoolz
    • Wybrane funkcje modułu dicttoolz
    • Wybrane funkcje modułu functoolz
  • Podsumowanie
  • Ćwiczenia
    • Zamiana dzielenia na ułamek
    • Parsowanie pliku kolorów
    • Analiza kwartetu Anscombe'a
    • Obliczenia punktów trasy
    • Geostrefa punktów trasy
    • Obiekt wywoływalny dla funkcji row_counter()

Rozdział 12. Techniki projektowania dekoratorów

  • Dekoratory jako funkcje wyższego rzędu
    • Korzystanie z funkcji update_wrapper() z modułu functools
  • Zagadnienia przekrojowe
  • Funkcje złożone
    • Wstępne przetwarzanie nieprawidłowych danych
  • Dekoratory z parametrami
  • Implementacja bardziej złożonych dekoratorów
  • Kwestie złożonego projektu
  • Podsumowanie
  • Ćwiczenia
    • Konwersje dat i godzin
    • Optymalizacja dekoratora
    • Funkcje obsługujące wartości None
    • Logowanie
    • Sprawdzanie "na sucho"

Rozdział 13. Biblioteka PyMonad

  • Pobieranie i instalacja modułu PyMonad
  • Kompozycja funkcyjna i rozwijanie funkcji
    • Korzystanie z rozwijanych funkcji wyższego rzędu
    • Kompozycja funkcyjna z wykorzystaniem biblioteki PyMonad
  • Funktory - uczyń funkcję ze wszystkiego
    • Korzystanie z wartościowanej leniwie monady ListMonad()
  • Funkcja monady bind()
  • Implementacja symulacji za pomocą monad
  • Dodatkowe własności biblioteki PyMonad
  • Podsumowanie
  • Ćwiczenia
    • Popraw aproksymację z wykorzystaniem funkcji arcus tangens
    • Obliczenia statystyczne
    • Walidacja danych
    • Wiele modeli

Rozdział 14. Moduły Multiprocessing, Threading i Concurrent.Futures

  • Programowanie funkcyjne a współbieżność
  • Co naprawdę oznacza współbieżność?
    • Warunki brzegowe
    • Współdzielenie zasobów za pomocą procesów lub wątków
    • Jak uzyskać największe korzyści?
  • Korzystanie z pul wieloprocesowych i zadań
    • Przetwarzanie wielu dużych plików
    • Parsowanie plików logu - pobieranie wierszy
    • Parsowanie wierszy logu do postaci nazwanych krotek
    • Parsowanie dodatkowych pól obiektu Access
    • Filtrowanie szczegółów dostępu
    • Analiza szczegółów dostępu
    • Pełny proces analizy
  • Korzystanie z puli wieloprocesowej w celu przetwarzania równoległego
    • Korzystanie z funkcji apply() do wykonywania pojedynczych żądań
    • Bardziej złożone architektury przetwarzania wieloprocesowego
    • Korzystanie z modułu concurrent.futures
    • Korzystanie z pul wątków modułu concurrent.futures
    • Korzystanie z modułów threading i queue
    • Korzystanie z funkcji asynchronicznych
    • Projektowanie współbieżnego przetwarzania
  • Podsumowanie
  • Ćwiczenia
    • Leniwe parsowanie
    • Filtrowanie szczegółów ścieżki dostępu
    • Dodaj dekoratory @cache
    • Utworzenie przykładowych danych
    • Zmiana struktury potoku

Rozdział 15. Podejście funkcyjne do usług sieciowych

  • Model HTTP żądanie-odpowiedź
    • Wstrzykiwanie stanu za pomocą plików cookie
    • Serwer o projekcie funkcyjnym
    • Szczegóły widoku funkcyjnego
    • Zagnieżdżanie usług
  • Standard WSGI
    • Zgłaszanie wyjątków podczas przetwarzania WSGI
    • Praktyczne aplikacje webowe
  • Definiowanie usług sieciowych jako funkcji
    • Przetwarzanie za pomocą aplikacji Flask
    • Warstwa dostępu do danych
  • Monitorowanie użycia
  • Podsumowanie
  • Ćwiczenia
    • Aplikacja WSGI - powitanie
    • Aplikacja WSGI - demo
    • Serializacja danych do formatu XML
    • Serializacja danych do formatu HTML
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-8322-990-4
Rozmiar pliku: 4,3 MB

BESTSELLERY

Kategorie: