[英]Python: Substitute variable values before passing to another function
我想确定输入的字符串是否是有效的函数名称。 有什么方法可以在传递给isfunction调用之前替换变量的值?
#!/usr/bin/python
def testFunc():
print "Hello world!";
return;
myString = "testFunc";
isfunction(testFunc); // This returns **True**
isfunction(myString); // This returns **False**
一种实现方法是使用eval
,它将字符串解释为代码:
try:
eval(myString)
except NameError:
# not a function
假设您要检查是否存在带有的已加载函数,可以尝试以下操作:
try:
if hasattr(myString, '__call__'):
func = myString
elif myString in dir(__builtins__):
func = eval(myString)
else:
func = globals()[myString]
except KeyError:
#this is the fail condition
# you can use func()
如果您始终保证myString实际上是一个字符串而不是一个函数对象,那么第一个if
实际上是不必要的,我只是为了安全起见添加了它。
无论如何,如果您实际计划执行这些功能,我会小心翼翼。 执行任意功能可能会带来风险。
编辑:
我添加了另一行,以确保我们除非愿意,否则实际上不执行代码。 还更改了它,使其更加整洁
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.