python-3.x - 在 python (globals())[method](param1,param2) 中与 exec('method(param1,param2)?
问题描述
在蟒蛇...
(globals())[method](param1,param2)
一样...
exec('method(param1,param2)')
从我的理解结果来看,这两种方法都是对方法的相同调用。我看不出一种技术与另一种技术相比有什么具体的好处?任何一个隐藏的陷阱都会暗示一个比另一个?解释器设计或最佳实践是否建议其中之一?
解决方案
片段
(globals())[method](param1,param2)
method
从字典中访问一个键globals()
(一次查找)并将返回的值作为可调用的值传递给它,并将参数param1
和param2
.
片段
exec('method(param1,param2)')
在幕后做更多的事情,因为它需要将字符串解析为抽象语法树method
、访问param1
和param2
字典中globals()
(三个查找)并执行method
作为可调用传递param1
和传递param2
给它。
推荐阅读
- python - Python,从上级目录导入将不起作用
- python - 如何打开请求会话?
- mysql - 如何编写 SQL 查询来计算每个用户的平均每日广告展示次数?
- python - Python 重构 - 多个类中的冗余函数
- google-analytics - 为什么 Google Analytics(分析)中的主页和受众概览之间的用户数不同?
- react-native - ReferenceError:找不到变量:nativeFabricUIManager
- mysql - TextField Django 的默认最大长度是多少?
- android - NestedScrollView、LinearLayout 超出约束过度滚动
- appium - ModuleNotFound:没有模块名称“appium”
- ios - 按 id 从数组中提取文本