Функциональное программирование на Python. Как написать

Товар

3 136  ₽
Функциональное программирование на Python. Как написать
  • 0 раз купили
  • 5  оценка
  • 2 осталось
  • 4 отзыва

Доставка

  • Почта России

    от 990 ₽

  • Курьерская доставка EMS

    от 1290 ₽

Характеристики

Артикул
15337579439
Состояние
Новый
Język publikacji
afrykanerski
Okładka
miękka
Nośnik
książka papierowa
Rok wydania
2023
Tytuł
Programowanie funkcyjne w Pythonie w.3
Autor
F Lott Steven
Wydawnictwo
Helion
Liczba stron
456
Numer wydania
3
Szerokość produktu
16 cm
Wysokość produktu
23 cm

Описание

Programowanie funkcyjne w Pythonie. Jak pisać

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

Steven F. Lott

  • 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:

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

    O autorze

    Spis treści:

    Słowo wstępne

    O autorze

    O recenzentach

    Przedmowa

    Rozdział 1. Zrozumieć programowanie funkcyjne

    Rozdział 2. Podstawowe pojęcia programowania funkcyjnego

    Rozdział 3. Funkcje, iteratory i generatory

    Rozdział 4. Praca z kolekcjami

    Rozdział 5. Funkcje wyższego rzędu

    Rozdział 6. Rekurencje i redukcje

    Rozdział 7. Złożone obiekty bezstanowe

    Rozdział 8. Moduł itertools

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

    Rozdział 10. Moduł functools

    Rozdział 11. Pakiet toolz

    Rozdział 12. Techniki projektowania dekoratorów

    Rozdział 13. Biblioteka PyMonad

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

    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

  • 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

  • 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

  • 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"

  • 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()

  • 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()

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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ę

  • 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)

  • 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
  • Steven F. Lott ma blisko pięćdziesiąt lat doświadczenia w programowaniu — kiedy rozpoczynał przygodę z kodem, komputery były duże, drogie i rzadkie. Od ponad dziesięciu lat używa Pythona do rozwiązywania problemów biznesowych; napisał kilka cenionych książek o tym języku. Obecnie jest technomadą . Mieszka na wschodnim wybrzeżu USA.

Гарантии

  • Гарантии

    Мы работаем по договору оферты и предоставляем все необходимые документы.

  • Лёгкий возврат

    Если товар не подошёл или не соответсвует описанию, мы поможем вернуть его.

  • Безопасная оплата

    Банковской картой, электронными деньгами, наличными в офисе или на расчётный счёт.

Отзывы о товаре

Рейтинг товара 5 / 5

4 отзыва

Russian English Polish