Лучший способ - сделать вызовы постоянными
def sub_function_1( x, y, z):
return x + y + z
def sub_function_2( x, y, z ):
return x + y
def master_function( x, y, z, F ):
return x * y + F(x,y,z)
Но вы можете сделать его более динамичным, если хотите:
def sub_function_1( x, y, z, **kwargs):
return x + y + z
def sub_function_2( x, y, **kwargs ):
return x + y
def master_function( x, y, z, F ):
return x * y + F(**locals())
Это лучше работает в потенциале Python 3:
def sub_function_1(*args):
return args[0] + args[1] + args[2]
def sub_function_2(*args):
return args[0] + args[1]
def master_function(*args, F):
return args[0] * args[1] + F(*args)
.
.
.
>>> master_function(1,2,3,F=sub_function_1)
8
>>> master_function(1,2,3,F=sub_function_2)
5
>>> master_function(1,2,F=sub_function_2)
5
>>> master_function(1,2,F=sub_function_1)
IndexError: tuple index out of range