码迷,mamicode.com
首页 > 编程语言 > 详细

PYthon第十三天

时间:2018-08-21 16:00:32      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:str   变量   内置函数   nbsp   func   打印   个数   字符   ict   

内置函数 eval

eval 执行字符串表示的代码,并把结果返回

1 i1 = eval(12+22)     两个数值相加
2 print(i1, type(i1))    34 <class ‘int‘>
3 n = 2
4 i2 = eval(n+3)       变量的值和数值相加
5 print(i2, type(i2))    5 <class ‘int‘>
6 eval(print(123))     123     打印语句
7 s1 = eval("‘a‘+‘b‘")   两个字符串相加
8 print(s1, type(s1))     ab <class ‘str‘>

 下面是使用报错的例子

1 s1 = eval(abc)
2 print(s1)

看下报错的原因:

技术分享图片

eval, 把 ‘abc‘ 解读成 一个变量,

而程序中却没有这个变量, 所以报错.

因此,可以发现, 为什么 eval 可以执行 字符串‘n + 2‘ 的代码

正确例子如下:

1 abc = {a: 1}
2 s1 = eval(abc)
3 print(s1, type(s1))    {‘a‘: 1} <class ‘dict‘>

可以把 abc 这个变量, 换成可以赋值的任何元素, 甚或是函数名

1 def foo():
2     print(123)
3 
4 
5 abc = foo
6 s1 = eval(abc)
7 print(s1, type(s1))
8 
9 s1()

执行结果如下:

1 <function foo at 0x10dd16ea0> <class function>
2 123

 

PYthon第十三天

标签:str   变量   内置函数   nbsp   func   打印   个数   字符   ict   

原文地址:https://www.cnblogs.com/golzn2018/p/9511697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!