在python中迭代不同的函数

2024-06-17 15:55:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想迭代不同的函数。我查过itertools,但没有找到任何相关的。 我在找这样的东西:

import mymod
import sys
mymodule= sys.module[__name__]
if __name__ == 'main':
    function_list1=['mymod.f1','mymod.f1(keyword=True)','mymod.f2']
    for func in function_list1:
        try:
            print(getattr(mymod,func)()) # problem: how do I call the keyword
        except Exception, e:
            print(e)
    function_list2=['f1','f2']
    for func in function_list2:
        getattr(mymodule,func)()

我已经编辑了代码,因为我想明确表示我想从另一个模块和当前模块调用一个函数。我可能想给函数传递一个关键字

模块mymod是函数的集合,它导入一些外部模块和我编写的一些模块,然后定义只使用局部变量的函数

   import sys
   def f1(keyword=False, keyword2='something', keyword3=0.5):
       a = 2
       return a

Tags: 模块函数nameinimportforsysfunction
2条回答

我想你在找^{} type from ^{}。在大多数情况下,您不需要它,因为函数是一级对象。你知道吗

from functools import partial
import mymod

if __name__ == '__main__':
    # Functions from another module
    function_list1 = [
        mymod.f1,  # partial(mymod.f1) will work, too.
        partial(mymod.f1, keyword=True),
        mymod.f2
    ]
    for func in function_list1:
        try:
            print(func())
        except Exception, e:
            print(e)

    # Functions from the current module
    function_list2 = [f1, f2]
    for func in function_list2:
        func()

使用局部变量或全局变量。你知道吗

import mymod
if __name__ == 'main':
    function_list=['mymod.f1','mymod.f2','mymod.f3']
    for func in function_list:
        try:
            locals()[func]() # something here?
        except Exception, e:
            print(e)

或者

import mymod
if __name__ == 'main':
    function_list=['mymod.f1','mymod.f2','mymod.f3']
    for func in function_list:
        try:
            globals()[func]() # something here?
        except Exception, e:
            print(e)

只有当函数在同一个模块中时,这才会起作用

另外,如注释中所述,如果保存这些函数而不使用列表中的倒逗号,则可以直接调用这些函数。你知道吗

相关问题 更多 >