Functional Programming
Functional ProgrammingHigher-Order Functions
Use a function as parameter. Example:
def do_twice(func,arg): return func(func(arg)) def double_it(arg): return arg * 2 print(do_twice(double_it,3))
Anonymous Functions(Lambdas)
Example:
def a_func(f, arg): return f(arg) result = a_func(lambda k: k+k, 5) print(result)
Use the
- lambda keyword
- the parameter variable,
- an expression to be processed
- a comma
- and the value to be passed
Another example:
def add_six(x): return x + 6 print(add_six(4)) print((lambda x:x + 6) (4))
Assign a Function to a Variable
Example
vat = lambda x: x * 1.19 print(vat(2))
Functions
map Function
def double_it(x): return x * 2 nums = [1, 2, 3, 4, 5] res = list(map(double_it, nums)) print (res)
Alternative with an anonymous function:
nums = [1, 2, 3, 4, 5] res = list(map(lambda x: x*2, nums)) print (res)
filter Function
Example:
nums = [1, 2, 3, 4, 5] result = list(filter(lambda x: x%2==1, nums)) print (result)
Parameters
- lambda variable
- a function which returns a boolean
Generators
Example:
def counting(): i = 0 while i < 10: yield i i += 1 for i in counting(): print(i)
Generators are iterables. They can be used in while and for loops.
yield defines a generator which replaces the return of a function. It does not destroy local variables
Interesting: Generators can be infinite since they don't have memory restrictions.
def nums(x): for i in range(x): if i % 3 == 0: yield i print(list(nums(20)))
- 37 views