十五、python沉淀之路--eval()的用法
一、eval函数
python eval() 函数的功能:将字符串str当成有效的表达式来求值并返回计算结果。
语法:eval(source[, globals[, locals]]) -> value
参数:
source:一个Python表达式或函数compile()返回的代码对象
globals:可选。必须是dictionary
locals:可选。任意map对象
如果提供了globals参数,那么它必须是dictionary类型;如果提供了locals参数,那么它可以是任意的map对象。
python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。我们可以用print (locals())来查看该函数体内的所有变量名和变量值。
- x = 1
- y = 1
- num = eval("x+y")
- print('num',num)
- def g():
- x = 2
- y = 2
- num1 = eval("x+y")
- print('num1',num1)
- num2 =eval("x+y",globals())
- print('num2',num2)
- num3 = eval("x+y",globals(),locals())
- print('num3',num3)
- g()
- num 2
- num1 4
- num2 2
- num3 4
解析:num2 因为有globals所以是全局变量,执行后结果为4;num3 既有globals 又有locals,仅在此情况下,优先采用locals的值,故计算结果是2
二、eval 可以把 list, tuple, dict 转换成str,返回来也成立;即互转。
- ###############
- # 字符串转成列表
- s = '[[1,2,],[3,4,],[5,6,],[8,9]]'
- li = eval(s)
- print(li)
- print(type(s))
- print(type(li))
- [[1, 2], [3, 4], [5, 6], [8, 9]]
- <class 'str'>
- <class 'list'>
- ########################
- #字符串转成字典
- s = "{1:'a',2:'b'}"
- dic = eval(s)
- print(dic)
- print(type(s))
- print(type(dic))
- {1: 'a', 2: 'b'}
- <class 'str'>
- <class 'dict'>
- ###########################
- #字符串转成元组
- s = '([1,2,],(3,4,),[5,6,],(8,9))'
- tu = eval(s)
- print(tu)
- print(type(s))
- print(type(tu))
- ([1, 2], (3, 4), [5, 6], (8, 9))
- <class 'str'>
- <class 'tuple'>
十五、python沉淀之路--eval()的用法的更多相关文章
- 十、python沉淀之路--高阶函数初识
一.高阶函数:分两种:一种是返回值中包含函数体:另一种是把一个函数体当作了参数传给了另一个函数 1.返回值中包含函数体 例1. def test(): print('这是一个测试') return t ...
- 十五. Python基础(15)--内置函数-1
十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...
- 二十五. Python基础(25)--模块和包
二十五. Python基础(25)--模块和包 ● 知识框架 ● 模块的属性__name__ # my_module.py def fun1(): print("Hello& ...
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
- 十八、python沉淀之路--生成器
一.生成器 生成器总结:语法上和函数类似:生成器函数和常规函数几乎是一样的.他们都是使用def语句进行定义,差别在于生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值.自动实 ...
- 十六、python沉淀之路--迭代器
一.迭代器 1.什么是迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前走). 2.可迭代对象:实 ...
- 五、python沉淀之路--字典
一. 1.根据序列,创建字典,并指定统一的值 v = dict.fromkeys(["],222) print(v) {': 222} 2.根据key 获取值,key不存在时,报错:get方 ...
- 十九、python沉淀之路--装饰器
一.实现装饰器的预备知识 装饰器 = 高阶函数 + 函数嵌套 + 闭包 1.高价函数定义: 1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个,都可称之 ...
- 十四、python沉淀之路--文件操作
一.文件操作b模式 1. # f = open('test11.py','rb',encoding='utf-8') # 这种情况会报错 f = open('test11.py','rb') # b ...
随机推荐
- Oracle 集合操作
在 Oracle 中提供了三种类型集合操作:并(UNION).交(INTERSECT).差(MINUS) · UNION:将多个查询的结果组合到一个查询结果之中,没有重复内容 · UNION ALL: ...
- 《Maven实战》第6章 仓库
6.1什么是Maven仓库? Maven仓库:存储所有Maven项目共享的构件的统一位置. Maven仓库的作用:Maven项目仅需声明依赖坐标,即可在需要的时候自动根据坐标找到仓库中的构件. 6.2 ...
- php编写的抽奖程序中奖概率算法
本文给大家分享的是php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法.用法很简单,代码里有详细注释说明,一看就懂,有需要的小伙伴参考下吧. 我们先完成后台PHP的流程,PHP的主要工作是负责配置奖项及 ...
- Java JDBC概要总结一(基本操作和SQL注入问题)
JDBC定义: JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API.JDBC是Java访问数据库的标准规范,可以为不同的关系 ...
- jq限制字符个数
<script> $(document).ready(function () { //限制字符个数 $(".box-right .title a").each(func ...
- Maven配置与创建
1.下载Maven工具 从maven官网下载:https://maven.apache.org/download.cgi apache-maven-x.x.x-bin.zip ,解压到指定目录,例如D ...
- Redis_01
http://redis.io/ http://www.yiibai.com/redis/redis_quick_guide.html X
- imageView图片放大缩小及旋转
imageView图片放大缩小及旋转 一.简介 二.方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCen ...
- python之list,tuple,str,dic简单记录(一)
list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.列表中的项目.列表中的项目应该包括在方括号中,这样python就知道你是在指明一个列表.一旦你创建了一个列表,你就可以添加 ...
- xml、json的序列化与反序列化
xml数据 : XmlSerializer.Serialize 与 XmlSerializer.Deserialize,使用起来稍有些复杂,需要对 “实体模型” 的“对应属性” 进行 节点特 ...