字典功能:您可以为“第2层”功能分配参数吗?

时间:2018-08-31 13:36:11

标签: python

预先感谢您花费在此查询上的时间。 我很想知道以下情况是否可能。 对于下面的代码,是否有语法可以让您定义 函数的“层”之外的函数的参数(由字典引用)?

对于此示例: 我有一个主要功能,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])

1 个答案:

答案 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)