我使用Python编写脚本。我使用main函数调用其他函数(子函数)。所以每次添加新的子函数时我都要在main函数中添加新的参数。 如何避免?
例如,我有2个子功能和1个主要功能:
def Func1(arg1, arg2): DoStuff1
def Func2(arg3, arg4): DoStuff2
def MainFunc(arg1, arg2, arg3, arg4):
return Func1(arg1, arg2) + Func2(arg3, arg4)
我写了一个新功能:
def NewFunc(arg5, arg6): DoStuff3
然后我必须将arg5, arg6
指定为MainFunc
:
def Func1(arg1, arg2): DoStuff1
def Func2(arg3, arg4): DoStuff2
def NewFunc(arg5, arg6): DoStuff3
def MainFunc(arg1, arg2, arg3, arg4, arg5, arg5):
return Func1(arg1, arg2) + Func2(arg3, arg4) + NewFunc(arg5, arg6)
如何避免将所有这些子参数添加到main函数中?
答案 0 :(得分:2)
您可以将多个参数组合到一个元组参数中并像这样使用它
def Func1(arg1, arg2): DoStuff1
def Func2(arg3, arg4): DoStuff2
def MainFunc(*arg):
return Func1(arg[0], arg[1]) + Func2(arg[2], arg[3])
答案 1 :(得分:2)
def func(arg1, arg2):
pass
def func2(arg3, arg4):
pass
def func3(arg5, arg6):
pass
def main(*args):
return func(*args[:2]) + func2(*args[2:4]) + func(*args[4:6])
其他方式:
def func(arg1, arg2, **kwargs):
pass
def func2(arg3, arg4, **kwargs):
pass
def func3(arg5, arg6, **kwargs):
pass
def main(**kwargs):
return func(**kwargs) + func2(**kwargs) + func(**kwargs)
答案 2 :(得分:2)
您可以使用参数解包,并定义接受任意数量位置参数的函数:
def func1(*args): # do stuff 1
def func2(*args): # do stuff 2
def new_func(*args): # do stuff 3
def main_func(*args):
return func1(*args[:2]) + func2(*args[2:4]) + new_func(*args[4:])
但是,它不会更加可读,并且它不会像目前为止那样显式。这些都算得上了!