Python:在传递给另一个函数之前替换变量值
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()
第一个 if
实际上是不必要的,如果你总是保证 myString 实际上是一个字符串而不是一个函数对象,我只是添加它是为了安全。
无论如何,如果您真的打算执行这些功能,我会谨慎行事。执行任意函数可能是冒险的事情。
编辑:
我添加了另一行以更加确定我们不会实际执行代码,除非我们愿意。也修改了它,让它更整洁
我想确定输入的字符串是否是一个有效的函数名。 有没有办法在传递给 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()
第一个 if
实际上是不必要的,如果你总是保证 myString 实际上是一个字符串而不是一个函数对象,我只是添加它是为了安全。
无论如何,如果您真的打算执行这些功能,我会谨慎行事。执行任意函数可能是冒险的事情。
编辑:
我添加了另一行以更加确定我们不会实际执行代码,除非我们愿意。也修改了它,让它更整洁