python中使用eval() 和 ast.literal_eval()的区别

原创 2015年05月11日 15:21:42

eval函数在python中做数据类型的转换还是很有用的。它的作用就是把数据还原成它本身或者是能够转化成的数据类型。

那么eval和ast.literal_val()的区别是什么呢?

eval在做计算前并不知道需要转化的内容是不是合法的(安全的)python数据类型。只是在调用函数的时候去计算。如果被计算的内容不是合法的python类型就会抛出异常。

ast.literal则会判断需要计算的内容计算后是不是合法的python类型,如果是则进行运算,否则就不进行运算。


------------------------------引用自stackoverflow--------------------------------

datamap = eval(raw_input('Provide some data here: ') means that you actually evaluate the code before you deem it to be unsafe or not. It evaluates the code as soon as the function is called. See also the dangers of eval.

ast.literal_eval raises an exception if the input isn't a valid Python datatype, so the code won't be executed if it's not.

Use ast.literal_eval whenever you need eval. If you have Python expressions as an input that you want to evaluate, you shouldn't (have them).

shareedit

版权声明:本文为博主原创文章,未经博主允许不得转载。

Python中eval与ast.literal_eval区别

Python中,如果要将字符串型的list,tuple,dict转变成原有的类型呢? 这个时候你自然会想到eval. eval函数在Python中做数据类型的转换还是很有用的。它的作用就是把数据还原成...

[python]用eval强制将字符串转换为字典变量时候出错:NameError: name 'null' is not defined[python]用eval函数 字符串转dict

---------------------------------搬家声明-------------------------------------- 本博客已搬家至个人网站 在路上 - On t...
  • cn_wk
  • cn_wk
  • 2016年03月29日 15:25
  • 2170

python ast 语法分析

ast(Abstract Syntax Trees)是python中非常有用的一个模块,我们可以通过分析python的抽象语法树来对python的代码进行分析和修改。 ast作用在python代码的语...

AST 模块:用 Python 修改 Python 代码

本文介绍如何利用Python的AST模块得到或者修改python虚拟机编译过程中生成的语法树 CPython 的编译过程 在开始之前,我们应该先看看 CPython 的编译过程,这个过程在...

Python中的map()函数和reduce()函数的用法

Python中的map()函数和reduce()函数的用法

Python:eval的妙用和滥用

eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。 so,结合math当成一个计算器很好用。 其他用法,可以把list,tuple,dict和strin...

Python源码分析6 – 从CST到AST的转化

Introduction 上篇文章解释了Python是如何使用PyParser生成CST的。回顾一下,Python执行代码要经过如下过程: 1.     Tokenizer进行词法分析,把源程序分解为...

Python ast 学习笔记1–手动建ast

Python ast 学习笔记1–手动建ast手动建astpython中的ast模块是非常强大的模块,可以用来修改python源码,或者分析python源码。为了学习ast模块,先来手动建立一个ast...
  • sgoal
  • sgoal
  • 2017年03月15日 20:33
  • 987

python神奇函数之eval()学习

python中有很多内置的很有用的工具函数,熟练地使用这些小工具绝对可以帮助你在工作中达到事半功倍的效果,今天由于需要用到了eval()函数,这个函数其实之前就用过了但是由于最近一直忙于看论文和方向上...

Python中eval与ast.literal_eval区别

Python中,如果要将字符串型的list,tuple,dict转变成原有的类型呢? 这个时候你自然会想到eval. eval函数在Python中做数据类型的转换还是很有用的。它的作用就是把数据还原成...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python中使用eval() 和 ast.literal_eval()的区别
举报原因:
原因补充:

(最多只允许输入30个字)