python的变量和函数名保存在与名字空间中,python执行代码时,会遍历局部名字空间、全局名字空间和内置名字空间来加载变量和函数。
对于一个字符串,如果已知这个字符串是个函数名,并且知道其参数结构,我们可以直接去命名空间查找这个字符串对应的函数并调用, python的locals()和globals()函数为我们提供了局部和全局名字空间的加载方法, 这两个函数返回的结果可以像dict一样用key值来查询。
# funcs.py
def test_func(x):
print(x)
# main.py
from funcs import *
class test_class():
def test1(self):
var = 'test_func'
func = globals()[var]
func(1)
def test2():
var = 'test2'
func = locals()['test1']
func()
testor = test_class()
testor.test1()
testor.test2()