繁体   English   中英

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()

如果您始终保证myString实际上是一个字符串而不是一个函数对象,那么第一个if实际上是不必要的,我只是为了安全起见添加了它。

无论如何,如果您实际计划执行这些功能,我会小心翼翼。 执行任意功能可能会带来风险。

编辑:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM