我正在尝试使用globals
来调用名称与字符串匹配的函数。例如:
def abc():
print('test')
globals()['abc']() # -> test
但如果abc
在另一个文件中,我应该如何调用此函数。
import file_that_have_abc as imp
globals()['imp.abc']()
将无效,因为它将在最近的文件中调用函数名称“imp.abc”。
答案 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)