我正在尝试调用 myFunc(),但是我想使用等于“ myFunc” 的字符串值,而不是在调用时手动键入。 / p>
这是我想做的一些例子;
a = "myFunc"
def myFunc():
print("Bla bla")
a() ### How can i compile this code like its myFunc()
我正在尝试调用 myFunc(),但是我想使用等于“ myFunc” 的字符串值,而不是在调用时手动键入。 / p>
这是我想做的一些例子;
a = "myFunc"
def myFunc():
print("Bla bla")
a() ### How can i compile this code like its myFunc()
在您的示例中,myFunc
是全局变量,因此:
globals()[a]()
如果您查看globals()
返回的字典,您会看到(以及其他内容):
{'a': 'myFunc','myFunc': <function myFunc at 0x0119B618>}
,
我可以想到两种实现方法:
使用全局名称空间
In [1]: def myfunc():
...: print('Bla bla!')
In [2]: a = 'myfunc'
In [3]: globals()[a]()
Bla bla!
或使用eval
In [4]: eval(a + '()')
Bla bla!
,
是的,您可以像这样用eval调用它:
a = "myFunc()"
def myFunc():
print("Bla bla")
eval(a)
Bla bla
这有帮助吗?谢谢! Eval对于调用列表中的函数很有用,例如,您可以迭代以下函数列表:
for item in functionlist:
eval(item)