在python中(globals())[method](param1,param2)与exec('method(param1,param2)相同?



python中…(globals())[method](param1,param2)

与…相同exec('method(param1,param2)')

在我的理解中,这两个方法的结果是相同的方法调用。我看不出哪一种技术比另一种有什么特别的好处?这两种方法有什么潜在的缺陷吗?解释器设计或最佳实践是否推荐其中一个?

代码片段
(globals())[method](param1,param2)

从字典globals()中访问键method(一次查找),并将返回值作为可调用对象执行,传递参数param1param2

的代码片段
exec('method(param1,param2)')

在底层做了更多的工作,因为它需要将字符串解析为抽象语法树,访问字典globals()中的method,param1param2(三次查找),并将method作为可调用对象执行,将param1param2传递给它。

相关内容

最新更新