2024-03-28 18:02:40 发布
网友
我想确定输入字符串是否是有效的函数名。 在传递给isfunction调用之前,有没有方法替换变量的值?在
#!/usr/bin/python def testFunc(): print "Hello world!"; return; myString = "testFunc"; isfunction(testFunc); // This returns **True** isfunction(myString); // This returns **False**
一种方法是使用eval,它将字符串解释为代码:
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实际上是一个字符串而不是函数对象,我只是为了安全起见才添加了它。在
if
无论如何,如果你真的打算执行这些功能,我会小心行事。执行任意函数可能是有风险的事情。在
编辑:
我添加了另一行,以确保我们实际上不会执行代码,除非我们愿意。还把它改了,使它更整洁一点
一种方法是使用
eval
,它将字符串解释为代码:假设您要检查是否存在加载的函数,可以尝试以下操作:
第一个
if
实际上是不必要的,如果你总是保证myString实际上是一个字符串而不是函数对象,我只是为了安全起见才添加了它。在无论如何,如果你真的打算执行这些功能,我会小心行事。执行任意函数可能是有风险的事情。在
编辑:
我添加了另一行,以确保我们实际上不会执行代码,除非我们愿意。还把它改了,使它更整洁一点
相关问题 更多 >
编程相关推荐