, partial
, . , , ( , ):
def base_function(*args):
for arg in args:
print arg
list_of_functions = [
lambda new_arg: base_function(new_arg,'arg_1'),
lambda new_arg: base_function(new_arg,'arg_2'),
lambda new_arg: base_function(new_arg,'arg_3')
]
for f in list_of_functions:
f('x')
import functools
class partial_atend(functools.partial):
def __call__(self, *args, **kwargs):
f=self.func
args += self.args
kw = self.keywords.copy()
kw.update(kwargs)
return f(*args, **kw)
list_of_functions = [
partial_atend(base_function, 'arg_1'),
partial_atend(base_function, 'arg_2'),
partial_atend(base_function, 'arg_3'),
]
list_of_functions = [ partial_atend(f.func, *(f.args+('another_arg',)), **f.keywords) for f in list_of_functions]
print "Make the call(s)..."
for f in list_of_functions:
f('x')
, : , , , partial_atends, ... . , . ( ), , , .
EDIT:
capitalize=True
, keywords
:
Change first base_function
kwargs:
def base_function(*args, **kwargs):
for arg in args:
print arg
for k,v in kwargs.items():
print("{}={}".format(k,v))
Then add this code:
list_of_functions = [ partial_atend(f.func, *f.args, capitalize=True, **f.keywords) for f in list_of_functions]
And print the new lambdas:
print "Make the call(s)...capitalized"
for f in list_of_functions:
f('x')