栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中使用eval?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中使用eval?

eval
并且
exec
是一种方便快捷的方法,可以动态地获取一些源代码,也许要稍加修改然后再执行-
但是,它们从来不是最好的方法,尤其是在生产代码中,而不是“快速而又简单”脏”的原型&c。

例如,如果我不得不处理这样的动态Python源代码,那么我会使用ast模块-

ast.literal_eval
比得多
eval
(比它更安全(您可以直接使用表达式的字符串形式来调用它,如果它是一次性的并且依赖仅在简单常量上执行,或者
node=ast.parse(source)
先进行操作,然后进行
node
遍历,也许与合适的访问者一起对它进行修改,例如进行变量查找,然后
literal_eval
进行节点查找);或者,一旦将节点置于适当的形状并对其进行安全性审查,我可以
compile
它(产生一个代码对象)并以此构建一个新的函数对象。远不那么简单(除非与最简单的情况
ast.literal_eval
一样简单
eval
!),但是在生产质量的代码中更安全,更可取。

对于许多任务,我见过的人(AB-)的使用

exec
eval
对,Python的功能强大的内置插件,如
getattr
setattr
,索引到
globals()
,&C,提供最好而事实上往往简单的解决方案。对于诸如JSON解析之类的特定用途,库类
json
更好,例如(例如,参见SilentGhost对耳鸣的评论)。等等…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517181.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号