Functional Python programming : discover the power of functional programming, generator functions, lazy evaluation, the built-in itertools library, and monads / Steven F. Lott.

Python is an easy-to-learn and extensible programming language that offers a number of functional programming features. This practical guide demonstrates the Python implementation of a number of functional programming techniques and design patterns. Through this book, you'll understand what fun...

Full description

Saved in:
Bibliographic Details
Main Author: Lott, Steven F. (Author)
Format: eBook
Language:English
Published: Birmingham, UK : Packt Publishing, 2018.
Edition:Second edition.
Subjects:
Online Access:Click for online access

MARC

LEADER 00000cam a2200000 i 4500
001 on1032707716
003 OCoLC
005 20241006213017.0
006 m o d
007 cr |n|---|||||
008 180428s2018 enk o 001 0 eng d
040 |a EBLCP  |b eng  |e pn  |c EBLCP  |d OCLCQ  |d MERUC  |d IDB  |d OCLCF  |d VT2  |d OCLCQ  |d LVT  |d C6I  |d YDX  |d N$T  |d UKMGB  |d ZCU  |d UKAHL  |d OCLCQ  |d K6U  |d OCLCO  |d OCLCQ  |d OCLCO  |d OCLCQ  |d SXB 
015 |a GBB877786  |2 bnb 
016 7 |a 018847176  |2 Uk 
019 |a 1032660598  |a 1032720633  |a 1065326113 
020 |a 9781788621854 
020 |a 1788621859 
020 |a 9781788627061 
020 |a 1788627067 
024 3 |a 9781788627061 
035 |a (OCoLC)1032707716  |z (OCoLC)1032660598  |z (OCoLC)1032720633  |z (OCoLC)1065326113 
037 |a B09385  |b 01201872 
050 4 |a QA76.73.P98  |b L688 2018 
072 7 |a COM  |x 051360  |2 bisacsh 
049 |a HCDD 
100 1 |a Lott, Steven F.,  |e author. 
245 1 0 |a Functional Python programming :  |b discover the power of functional programming, generator functions, lazy evaluation, the built-in itertools library, and monads /  |c Steven F. Lott. 
250 |a Second edition. 
260 |a Birmingham, UK :  |b Packt Publishing,  |c 2018. 
300 |a 1 online resource 
336 |a text  |b txt  |2 rdacontent 
337 |a computer  |b c  |2 rdamedia 
338 |a online resource  |b cr  |2 rdacarrier 
500 |a Includes index. 
520 |a Python is an easy-to-learn and extensible programming language that offers a number of functional programming features. This practical guide demonstrates the Python implementation of a number of functional programming techniques and design patterns. Through this book, you'll understand what functional programming is all about, its impact on ... 
505 0 |a Cover -- Copyright and Credits -- Packt Upsell -- Contributors -- Table of Contents -- Preface -- Chapter 1: Understanding Functional Programming -- Identifying a paradigm -- Subdividing the procedural paradigm -- Using the functional paradigm -- Using a functional hybrid -- Looking at object creation -- The stack of turtles -- A classic example of functional programming -- Exploratory data analysis -- Summary -- Chapter 2: Introducing Essential Functional Concepts -- First-class functions -- Pure functions -- Higher-order functions -- Immutable data -- Strict and non-strict evaluation -- Recursion instead of an explicit loop state -- Functional type systems -- Familiar territory -- Learning some advanced concepts -- Summary -- Chapter 3: Functions, Iterators, and Generators -- Writing pure functions -- Functions as first-class objects -- Using strings -- Using tuples and named tuples -- Using generator expressions -- Exploring the limitations of generators -- Combining generator expressions -- Cleaning raw data with generator functions -- Using lists, dicts, and sets -- Using stateful mappings -- Using the bisect module to create a mapping -- Using stateful sets -- Summary -- Chapter 4: Working with Collections -- An overview of function varieties -- Working with iterables -- Parsing an XML file -- Parsing a file at a higher level -- Pairing up items from a sequence -- Using the iter() function explicitly -- Extending a simple loop -- Applying generator expressions to scalar functions -- Using any() and all() as reductions -- Using len() and sum() -- Using sums and counts for statistics -- Using zip() to structure and flatten sequences -- Unzipping a zipped sequence -- Flattening sequences -- Structuring flat sequences -- Structuring flat sequences -- an alternative approach -- Using reversed() to change the order. 
505 8 |a Using enumerate() to include a sequence number -- Summary -- Chapter 5: Higher-Order Functions -- Using max() and min() to find extrema -- Using Python lambda forms -- Lambdas and the lambda calculus -- Using the map() function to apply a function to a collection -- Working with lambda forms and map() -- Using map() with multiple sequences -- Using the filter() function to pass or reject data -- Using filter() to identify outliers -- The iter() function with a sentinel value -- Using sorted() to put data in order -- Writing higher-order functions -- Writing higher-order mappings and filters -- Unwrapping data while mapping -- Wrapping additional data while mapping -- Flattening data while mapping -- Structuring data while filtering -- Writing generator functions -- Building higher-order functions with callables -- Assuring good functional design -- Review of some design patterns -- Summary -- Chapter 6: Recursions and Reductions -- Simple numerical recursions -- Implementing tail-call optimization -- Leaving recursion in place -- Handling difficult tail-call optimization -- Processing collections through recursion -- Tail-call optimization for collections -- Reductions and folding a collection from many items to one -- Group-by reduction from many items to fewer -- Building a mapping with Counter -- Building a mapping by sorting -- Grouping or partitioning data by key values -- Writing more general group-by reductions -- Writing higher-order reductions -- Writing file parsers -- Parsing CSV files -- Parsing plain text files with headers -- Summary -- Chapter 7: Additional Tuple Techniques -- Using tuples to collect data -- Using named tuples to collect data -- Building named tuples with functional constructors -- Avoiding stateful classes by using families of tuples -- Assigning statistical ranks -- Wrapping instead of state changing. 
505 8 |a Rewrapping instead of state changing -- Computing Spearman rank-order correlation -- Polymorphism and type-pattern matching -- Summary -- Chapter 8: The Itertools Module -- Working with the infinite iterators -- Counting with count() -- Counting with float arguments -- Re-iterating a cycle with cycle() -- Repeating a single value with repeat() -- Using the finite iterators -- Assigning numbers with enumerate() -- Running totals with accumulate() -- Combining iterators with chain() -- Partitioning an iterator with groupby() -- Merging iterables with zip_longest() and zip() -- Filtering with compress() -- Picking subsets with islice() -- Stateful filtering with dropwhile() and takewhile() -- Two approaches to filtering with filterfalse() and filter() -- Applying a function to data via starmap() and map() -- Cloning iterators with tee() -- The itertools recipes -- Summary -- Chapter 9: More Itertools Techniques -- Enumerating the Cartesian product -- Reducing a product -- Computing distances -- Getting all pixels and all colors -- Performance analysis -- Rearranging the problem -- Combining two transformations -- Permuting a collection of values -- Generating all combinations -- Recipes -- Summary -- Chapter 10: The Functools Module -- Function tools -- Memoizing previous results with lru_cache -- Defining classes with total ordering -- Defining number classes -- Applying partial arguments with partial() -- Reducing sets of data with the reduce() function -- Combining map() and reduce() -- Using the reduce() and partial() functions -- Using the map() and reduce() functions to sanitize raw data -- Using the groupby() and reduce() functions -- Summary -- Chapter 11: Decorator Design Techniques -- Decorators as higher-order functions -- Using the functools update_wrapper() functions -- Cross-cutting concerns -- Composite design -- Preprocessing bad data. 
505 8 |a Adding a parameter to a decorator -- Implementing more complex decorators -- Complex design considerations -- Summary -- Chapter 12: The Multiprocessing and Threading Modules -- Functional programming and concurrency -- What concurrency really means -- The boundary conditions -- Sharing resources with process or threads -- Where benefits will accrue -- Using multiprocessing pools and tasks -- Processing many large files -- Parsing log files -- gathering the rows -- Parsing log lines into namedtuples -- Parsing additional fields of an Access object -- Filtering the access details -- Analyzing the access details -- The complete analysis process -- Using a multiprocessing pool for concurrent processing -- Using apply() to make a single request -- Using the map_async(), starmap_async(), and apply_async() functions -- More complex multiprocessing architectures -- Using the concurrent.futures module -- Using concurrent.futures thread pools -- Using the threading and queue modules -- Designing concurrent processing -- Summary -- Chapter 13: Conditional Expressions and the Operator Module -- Evaluating conditional expressions -- Exploiting non-strict dictionary rules -- Filtering true conditional expressions -- Finding a matching pattern -- Using the operator module instead of lambdas -- Getting named attributes when using higher-order functions -- Starmapping with operators -- Reducing with operator module functions -- Summary -- Chapter 14: The PyMonad Library -- Downloading and installing -- Functional composition and currying -- Using curried higher-order functions -- Currying the hard way -- Functional composition and the PyMonad * operator -- Functors and applicative functors -- Using the lazy List() functor -- Monad bind() function and the>> operator -- Implementing simulation with monads -- Additional PyMonad features -- Summary. 
505 8 |a Chapter 15: A Functional Approach to Web Services -- The HTTP request-response model -- Injecting state through cookies -- Considering a server with a functional design -- Looking more deeply into the functional view -- Nesting the services -- The WSGI standard -- Throwing exceptions during WSGI processing -- Pragmatic WSGI applications -- Defining web services as functions -- Creating the WSGI application -- Getting raw data -- Applying a filter -- Serializing the results -- Serializing data into JSON or CSV formats -- Serializing data into XML -- Serializing data into HTML -- Tracking usage -- Summary -- Chapter 16: Optimizations and Improvements -- Memoization and caching -- Specializing memoization -- Tail recursion optimizations -- Optimizing storage -- Optimizing accuracy -- Reducing accuracy based on audience requirements -- Case study-making a chi-squared decision -- Filtering and reducing the raw data with a Counter object -- Reading summarized data -- Computing sums with a Counter object -- Computing probabilities from Counter objects -- Computing expected values and displaying a contingency table -- Computing the chi-squared value -- Computing the chi-squared threshold -- Computing the incomplete gamma function -- Computing the complete gamma function -- Computing the odds of a distribution being random -- Functional programming design patterns -- Summary -- Other Books You May Enjoy -- Index. 
588 0 |a Print version record. 
650 0 |a Python (Computer program language) 
650 0 |a Application software  |x Development. 
650 7 |a COMPUTERS  |x Programming Languages  |x Python.  |2 bisacsh 
650 7 |a Application software  |x Development  |2 fast 
650 7 |a Python (Computer program language)  |2 fast 
776 0 8 |i Print version:  |a F. Lott, Steven.  |t Functional Python Programming : Discover the power of functional programming, generator functions, lazy evaluation, the built-in itertools library, and monads, 2nd Edition.  |d Birmingham : Packt Publishing, ©2018 
856 4 0 |u https://ebookcentral.proquest.com/lib/holycrosscollege-ebooks/detail.action?docID=5353672  |y Click for online access 
903 |a EBC-AC 
994 |a 92  |b HCD