* 作者:煮酒品茶 tea
* 博客:http://www.zwhset.com http://cwtea.blog.51cto.com
* 目前在京峰教育担任python讲师
#0、python代码执行eval
> eval最常见的就是把字符转类型转换成一些python内置类型,如果需要把代码层的也转换的话需要用到exec函数
#1、函数原型
~~~
eval(...)
eval(source[, globals[, locals]]) -> value #返回一个值
这个souce可以是python的表达式或者是一个complie()对象
globals参数必须是一个字典
locals可以是一个zipping
~~~
#2、样例
~~~
In [6]: a = (1,2,3)
In [7]: b = {'name':'zwhset','age':14}
In [8]: eval(a) # 转化一种元组类型,参数传入错误
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in ()
----> 1 eval(a)
TypeError: eval() arg 1 must be a string or code object
In [9]: c = str(a) # 对元组a转换成字符串并赋值给c
In [10]: d = str(b)
In [13]: c,d
Out[13]: ('(1, 2, 3)', "{'age': 14, 'name': 'zwhset'}")
In [14]: eval(c) #eval..
Out[14]: (1, 2, 3)
In [15]: eval(d)
Out[15]: {'age': 14, 'name': 'zwhset'}
In [16]: type(eval(d)) #执行字符串表达式转换变成一个字典
Out[16]: dict
In [17]: e = 'g = 1' # 一个语句
In [18]: eval(e) # 用eval执行一个语句,python代码出错,需要用到后面的exec方法。
File "", line 1
g = 1
^
SyntaxError: invalid syntax
~~~