十五、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())来查看该函数体内的所有变量名和变量值。

 1 x = 1
 2 y = 1
 3 num = eval("x+y")
 4 print(‘num‘,num)
 5
 6 def g():
 7     x = 2
 8     y = 2
 9     num1 = eval("x+y")
10     print(‘num1‘,num1)
11     num2 =eval("x+y",globals())
12     print(‘num2‘,num2)
13     num3 = eval("x+y",globals(),locals())
14     print(‘num3‘,num3)
15
16 g()
1 num 2
2 num1 4
3 num2 2
4 num3 4

解析:num2 因为有globals所以是全局变量,执行后结果为4;num3 既有globals 又有locals,仅在此情况下,优先采用locals的值,故计算结果是2

二、eval 可以把 list, tuple, dict 转换成str,返回来也成立;即互转。

1 ###############
2 # 字符串转成列表
3 s = ‘[[1,2,],[3,4,],[5,6,],[8,9]]‘
4 li = eval(s)
5 print(li)
6 print(type(s))
7 print(type(li))
1 [[1, 2], [3, 4], [5, 6], [8, 9]]
2 <class ‘str‘>
3 <class ‘list‘>
1 ########################
2 #字符串转成字典
3 s = "{1:‘a‘,2:‘b‘}"
4 dic = eval(s)
5 print(dic)
6 print(type(s))
7 print(type(dic))
1 {1: ‘a‘, 2: ‘b‘}
2 <class ‘str‘>
3 <class ‘dict‘>
1 ###########################
2 #字符串转成元组
3 s = ‘([1,2,],(3,4,),[5,6,],(8,9))‘
4 tu = eval(s)
5 print(tu)
6 print(type(s))
7 print(type(tu))
1 ([1, 2], (3, 4), [5, 6], (8, 9))
2 <class ‘str‘>
3 <class ‘tuple‘>

原文地址:https://www.cnblogs.com/jianguo221/p/8975899.html

时间: 2024-11-12 06:09:02

十五、python沉淀之路--eval()的用法的相关文章

十八、十九穿插python沉淀之路--嵌套、闭包、递归,三者的区别

一.嵌套函数 python允许在定义函数的时候,其函数体内又包含另外一个函数的完整定义,这就是我们通常所说的嵌套定义.为什么?因为函数是用def语句定义的,凡是其他语句可以出现的地方,def语句同样可以出现.像这样定义在其他函数内的函数叫做内部函数,内部函数所在的函数叫做外部函数.当然,我们可以多层嵌套,这样的话,除了最外层和最内层的函数之外,其它函数既是外部函数又是内部函数. 定义:简单点儿理解就是函数(包括定义函数)内部定义了新函数,即一层套一层. ¥¥¥¥¥嵌套函数里面两个重要的概念:变量

十四、python沉淀之路--文件操作

一.文件操作b模式 1. 1 # f = open('test11.py','rb',encoding='utf-8') # 这种情况会报错 2 f = open('test11.py','rb') # b 模式不能指定编码方式 3 data = f.read() 4 print('直接打印出来:',data) 5 print('解码打印\n',data.decode('utf-8')) 6 f.close() 1 直接打印出来: b'11111\r\n22222\r\n3333\r\n' 2

python学习笔记(十五) - python连接mysql数据库

一. 安装mysql驱动: 由于mysql服务器以独立的进程运行,并通过网络对外服务,所以,需要支持python的mysql驱动来连接mysql服务器. 安装驱动:easy_install mysql-connector-python 二. 连接数据库: 下面演示使用python代码连接mysql: #!/usr/bin/env python # -*- coding: utf-8 -*- # utility @ Python # 导入MySQL驱动: import mysql.connecto

四十五 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询

bool查询说明 filter:[],字段的过滤,不参与打分must:[],如果有多个查询,都必须满足[并且]should:[],如果有多个查询,满足一个或者多个都匹配[或者]must_not:[],相反查询词一个都不满足的就匹配[取反,非] # bool查询 # 老版本的filtered已经被bool替换 #用 bool 包括 must should must_not filter 来完成 #格式如下: #bool:{ # "filter":[], 字段的过滤,不参与打分 # &qu

python沉淀之路~~整型的属性

python的基础知识: 基本数据类型:int   str   list   tuple   dict   bool 一.整型的属性功能 1.工厂方法将字符串转换成整型 1 a = "1234" 2 b = int(a) 3 print(b) 4 print(type(b),b) #查看类型,同时可以返回b的值 5 # c = '124asd' 里秒你包含字符的,就不能用这个方法转换了 6 #可以通过print(type(c))来查看他的类型 运行结果 1 1234 2 <cla

Python核心技术与实战——十五|Python协程

我们在上一章将生成器的时候最后写了,在Python2中生成器还扮演了一个重要的角色——实现Python的协程.那什么是协程呢? 协程 协程是实现并发编程的一种方式.提到并发,肯很多人都会想到多线程/多进程模型,这就是解决并发问题的经典模型之一.在最初的互联网世界中,多线程/多进程就在服务器并发中起到举足轻重的作用. 但是随着互联网的发展,慢慢很多场合都会遇到C10K瓶颈,也就是同时连接到服务器的客户达到1W,于是,很多代码就跑崩溃,因为进程的上下文切换占用了大量的资源,线程也顶不住如此巨大的压力

二、python沉淀之路~~字符串属性(str)

1.capitalize的用法:即将输出字符串首字母大写 1 test = "heLLo" 2 v = test.capitalize() 3 print(v) 结果:Hello. 2.casefold和lower的用法以及区别 1 test = "heLLo" 2 v1 = test.casefold() 3 print(v1) 4 v2 = test.lower() 5 print(v2) 结果:hello,hello.结果相同,但是适用范围不一样.casefo

十一、python沉淀之路--map函数、filter函数、reduce函数、匿名函数、内置函数

一.map函数 1.自定义函数,实现类似于map函数的功能 1 num_l = [1,3,4,5,6,9] 2 def power(n): 3 return n ** 2 4 def map_test(func,array): 5 li0 = [] 6 for i in array: 7 p = func(i) 8 li0.append(p) 9 return li0 10 11 f = map_test(power,num_l) 运用自己定义的函数来计算 12 print(f) 13 f =

十三、python沉淀之路--文件操作

一.文件的读操作 例1 1 f = open('学习',encoding='utf-8') #首先要打开文件,不然直接读,是读不出来的 2 data = f.read() #read后的括号里不添加任何东西 3 print(data) 4 f.close() #读取完了后一定要记得关闭文件,不然内存会一直交互数据占据内存空间,而且不关闭,数据容易丢失,或被别人读取 例2:readline   readable 1 f = open('学习','r',encoding='utf-8') 2 3 p