2024-04-25 13:38:13 发布
网友
在Python程序中,如果给定一个带有函数名的字符串,调用函数的最佳方法是什么。例如,假设我有一个模块foo,并且我有一个内容为"bar"的字符串。调用foo.bar()的最佳方法是什么?
foo
"bar"
foo.bar()
我需要得到函数的返回值,这就是为什么我不使用eval。我通过使用eval定义一个返回函数调用结果的temp函数来解决这个问题,但我希望有一个更优雅的方法来实现这一点。
eval
假设模块foo使用方法bar:
bar
import foo method_to_call = getattr(foo, 'bar') result = method_to_call()
您可以将第2行和第3行缩短为:
result = getattr(foo, 'bar')()
如果这对您的用例更有意义的话。
您可以在类实例绑定方法、模块级方法、类方法上以这种方式使用^{}。。。名单还在后面。
locals()["myfunction"]()
或者
globals()["myfunction"]()
locals返回具有当前本地符号表的字典。globals返回具有全局符号表的字典。
帕特里克的解决方案可能是最干净的。 如果您还需要动态获取模块,则可以按如下方式导入:
module = __import__('foo') func = getattr(module, 'bar') func()
假设模块
foo
使用方法bar
:您可以将第2行和第3行缩短为:
如果这对您的用例更有意义的话。
您可以在类实例绑定方法、模块级方法、类方法上以这种方式使用^{} 。。。名单还在后面。
或者
locals返回具有当前本地符号表的字典。globals返回具有全局符号表的字典。
帕特里克的解决方案可能是最干净的。 如果您还需要动态获取模块,则可以按如下方式导入:
相关问题 更多 >
编程相关推荐