预先感谢您花费在此查询上的时间。 我很想知道以下情况是否可能。 对于下面的代码,是否有语法可以让您定义 函数的“层”之外的函数的参数(由字典引用)?
对于此示例:
我有一个主要功能,mainFunction(key)
。
我可以在最后一行mainFunction(mainReferences[0]
中调用mainFunction0或1
IE将密钥更改为0或1会将引用串联
用于要调用的函数名称。
但是如果...我希望mainFunction0有某种参数怎么办? (一个或多个参数),我想参考
mainFunction(mainReferences[0])
我尝试了以下方法,但似乎没有任何效果。
mainFunction(mainReferences[0])(1)
mainFunction(mainReferences[0], 1)
在任何情况下,附加的“ 1”是“ testArg0”的输入
在功能mainFunction0(testArg0)
中。
可以做到吗? 如果是这样,是否还可以输入多个“层外”参数?
干杯!
def mainFunction(key):
def mainFunction0(testArg0):
if testArg0 == 1:
print("main function 1")
else:
pass
def mainFunction1():
print("main function 1")
locals()['mainFunction' + key]()
mainReferences = ["0", "1"]
mainFunction(mainReferences[0])
答案 0 :(得分:0)
您可以使mainFunction
接受可变参数:
def mainFunction(key, *args, **kwargs):
def mainFunction0(testArg0):
if testArg0 == 1:
print("main function 1")
else:
pass
def mainFunction1():
print("main function 1")
locals()['mainFunction' + key](*args, **kwargs)
mainReferences = ["0", "1"]
mainFunction(mainReferences[0], 1)
或使mainFunction
返回一个函数对象,并让调用者进行实际的调用:
def mainFunction(key):
def mainFunction0(testArg0):
if testArg0 == 1:
print("main function 1")
else:
pass
def mainFunction1():
print("main function 1")
return locals()['mainFunction' + key]
mainReferences = ["0", "1"]
mainFunction(mainReferences[0])(1)