Python:在传递给另一个函数之前替换变量值

2024-03-28 18:02:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想确定输入字符串是否是有效的函数名。 在传递给isfunction调用之前,有没有方法替换变量的值?在

#!/usr/bin/python
def testFunc():
    print "Hello world!";
    return;

myString = "testFunc";
isfunction(testFunc); // This returns **True**
isfunction(myString); // This returns **False**

Tags: 方法函数字符串helloworldreturnbinusr
2条回答

一种方法是使用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实际上是一个字符串而不是函数对象,我只是为了安全起见才添加了它。在

无论如何,如果你真的打算执行这些功能,我会小心行事。执行任意函数可能是有风险的事情。在

编辑:

我添加了另一行,以确保我们实际上不会执行代码,除非我们愿意。还把它改了,使它更整洁一点

相关问题 更多 >