51Testing软件测试论坛

标题: Python: eval()函数 [打印本页]

作者: 乐哈哈yoyo    时间: 2019-4-2 14:26
标题: Python: eval()函数
形式功能:1:b = eval(s),去掉字符串 str 类型外套,恢复里面内容类型赋给 b,但不改变s的类型
2,将字符串 str 当成有效的表达式来求值并返回计算结果

语法: eval(source[, globals[, locals]]) -> value
参数:
source:一个 Python 表达式或函数 compile()返回的代码对象
globals:可选。必须是 dictionary
locals:可选。任意映射对象

形式功能1 的表现:
例1:数值字符串
  1. s = '1'
  2. b = eval(s)
  3. print(b)
  4. print(type(eval(s)))
  5. print(type(s)
复制代码

输出:
1
<class ‘int’>
<class ‘str’>

例2:列表字符串
  1. s = '[[1,2],[3,4]]'
  2. b = eval(s)
  3. print(b)
  4. print(type(eval(s)))
  5. print(type(s))
复制代码

输出:
[[1, 2], [3, 4]]
<class ‘list’>
<class ‘str’>

例3:元祖字符串
  1. s = '([1,2],[3,4])'
  2. b = eval(s)
  3. print(b)
  4. print(type(eval(s)))
  5. print(type(s))
复制代码

输出:
([1, 2], [3, 4])
<class ‘tuple’>
<class ‘str’>

例4:字典字符串
  1. s = "{'name':'张三','age':19}"
  2. b = eval(s)
  3. print(b)
  4. print(type(eval(s)))
  5. print(type(s))
复制代码

输出:
{‘name’: ‘张三’, ‘age’: 19}
<class ‘dict’>
<class ‘str’>

形式功能2 的表现:

例1
  1. s = "print('abcde')"
  2. b = eval(s)   #  运行了“print('abcde') ”  输出:abcde
  3. print(type(b))  #<class 'NoneType'>
复制代码

例2
  1. a = 10
  2. b = 20
  3. c = eval( "a+b")
  4. print(c)   #运行了‘a+b’  输出:30
复制代码


例3
  1. dict1 = dict(a=100,b=200)
  2. d = eval( "a+b",dict1)
  3. print(d)  #输出:300
复制代码

应用:可以应用在文件读出content (读出来为字符串类型),转为其他类型进行操作
作者: Miss_love    时间: 2020-12-30 17:00
支持分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2