使用globals()调用其他文件中的函数

时间:2017-01-09 08:38:08

标签: python python-3.x

我正在尝试使用globals来调用名称与字符串匹配的函数。例如:

def abc():
    print('test')

globals()['abc']()  # -> test

但如果abc在另一个文件中,我应该如何调用此函数。

import file_that_have_abc as imp
globals()['imp.abc']()

将无效,因为它将在最近的文件中调用函数名称“imp.abc”。

2 个答案:

答案 0 :(得分:2)

使用getattr访问模块的成员:

func = getattr(globals()['file_that_have_abc'], 'abc')
func()

当然,如果您不需要来查找模块,可以将globals放在此处。

答案 1 :(得分:0)

您只需使用globals()调用即可访问当前模块中的变量。对于其他模块,只需使用您导入模块的名称 - 并从名称作为字符串检索函数/类/变量,使用getattr函数。

例如:

import math
func = `sin`

getattr(math, func)(0)