Adding function_picker.py to demo class with function parameter and any number of arg and kwarg parameters
This commit is contained in:
parent
9098da24c0
commit
b122a870cf
58
function_picker.py
Normal file
58
function_picker.py
Normal file
@ -0,0 +1,58 @@
|
||||
'''
|
||||
Class FunctionPicker takes a function (func) and multiple args or kargs as parameters and returns the
|
||||
attribute result.
|
||||
|
||||
Instantiated FunctionPicker objects apply the function passed as a parameter to args or kargs
|
||||
|
||||
'''
|
||||
|
||||
class FuncPick:
|
||||
def __init__(self, func, *args, **kwargs):
|
||||
self.result = func(*args, **kwargs)
|
||||
return
|
||||
|
||||
def multiply(x, y):
|
||||
return x*y
|
||||
|
||||
def floor_divide(x, y):
|
||||
assert y !=0, "Division by zero is not allowed"
|
||||
return x // y
|
||||
|
||||
def addition(*args):
|
||||
return sum(args)
|
||||
|
||||
def product_all(*args):
|
||||
result = 1
|
||||
for num in args:
|
||||
result *= num
|
||||
return result
|
||||
|
||||
def product_value(**kwargs): # Multiply each kwarg.value by 10
|
||||
factor = 10
|
||||
result = {}
|
||||
for key, value in kwargs.items():
|
||||
result[key] = value * factor
|
||||
return result
|
||||
|
||||
# Example FuncPick class instances:
|
||||
mult = FuncPick(multiply, 3, 4) # (func, *args)
|
||||
fdiv = FuncPick(floor_divide, 56, 7) # (func, *args)
|
||||
add = FuncPick(addition, 3, 6, 81, 99) # (func, *args)
|
||||
product = FuncPick(product_all, 3, 6, 81, 99) # (func, *args)
|
||||
product_kwvals = FuncPick(product_value, a=5, b=6, c=7, d=8) # (func, *kwargs)
|
||||
|
||||
# Print func argument results:
|
||||
print(mult.result)
|
||||
print(fdiv.result )
|
||||
print(add.result)
|
||||
print(product.result)
|
||||
print(product_kwvals.result)
|
||||
|
||||
# Output:
|
||||
# 12
|
||||
# 8
|
||||
# 189
|
||||
# 144342
|
||||
# {'a': 50, 'b': 60, 'c': 70, 'd': 80} # A dictionary
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user