内置函数_eval
eval功能:将字符串str当成有效的表达式来求值并返回计算结果。
语法: eval(source[, globals[, locals]]) -> value
参数说明:
expression(sourse) -- 字符串表达式。也即,再写该表达式时不能忘记引号“ ”
=语句字符串
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
= 全局变量,若有,必须是字典。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
= 局部变量,若有,必须是字典,若无,则等同于globals
返回值:返回表达式expression执行结果
可以把list,tuple,dict和string相互转化。
#字符串转换成列表
>>>a = "[1,2,3,4,5,6,7]"
>>>type(a)
<type 'str'>
>>> a = eval(a)
>>> print (a)
[1,2,3,4,5,6,7]
>>> type(a)
<type 'list'>
#字符串转换成字典
>>> a = "{1: 'a', 2: 'b',3:’c’}"
>>> type(a)
<type 'str'>
>>> a = eval(a)
>>> print (a)
{1: 'a', 2: 'b', 3:’c’}
>>> type(a)
<type 'dict'>
#字符串转换成元组
>>> a = "(1,2,3,4,5,6,7)"
>>> type(a)
<type 'str'>
>>>a= eval(a)
>>> print (a)
(1,2,3,4,5,6,7)
>>> type(a)
<type 'tuple'>
实例练习:
x = 100
y = 200
ls = {"x":1,"y":2}
gs = {"x":3,"y":4} print("-----globals,locals均提供-----")
a = eval("x+y",ls,gs) # globals, locals均提供
print("a =",a) #a = 7
print("ls[x] = %d,ls[y] = %d"%(ls["x"],ls["y"])) #ls[x] = 1,ls[y] = 2
print("gs[x] = %d,gs[y] = %d"%(gs["x"],gs["y"])) #gs[x] = 3,gs[y] = 4
print("x = %d, y = %d"%(x,y)) #x = 100, y = 200 print("-----globals提供-----")
b = eval("x+y",ls)
print("b =",b) #b = 3
print("ls[x] = %d,ls[y] = %d"%(ls["x"],ls["y"])) #ls[x] = 1,ls[y] = 2
print("gs[x] = %d,gs[y] = %d"%(gs["x"],gs["y"])) #gs[x] = 3,gs[y] = 4
print("x = %d, y = %d"%(x,y)) #x = 100, y = 200 print("-----globals提供,local为None相当于不提供-----")
c = eval("x+y",ls,None)
print("c =",c) #c = 3
print("ls[x] = %d,ls[y] = %d"%(ls["x"],ls["y"])) #ls[x] = 1,ls[y] = 2
print("gs[x] = %d,gs[y] = %d"%(gs["x"],gs["y"])) #gs[x] = 3,gs[y] = 4
print("x = %d, y = %d"%(x,y)) #x = 100, y = 200 print("-----globals为None,相当于不提供, locals提供-----")
d = eval("x+y",None,gs)
print("d =",d) #d = 7
print("ls[x] = %d,ls[y] = %d"%(ls["x"],ls["y"])) #ls[x] = 1,ls[y] = 2
print("gs[x] = %d,gs[y] = %d"%(gs["x"],gs["y"])) #gs[x] = 3,gs[y] = 4
print("x = %d, y = %d"%(x,y)) #x = 100, y = 200
执行结果:
-----globals,locals均提供-----
a = 7
ls[x] = 1,ls[y] = 2
gs[x] = 3,gs[y] = 4
x = 100, y = 200
-----globals提供-----
b = 3
ls[x] = 1,ls[y] = 2
gs[x] = 3,gs[y] = 4
x = 100, y = 200
-----globals提供,local为None相当于不提供-----
c = 3
ls[x] = 1,ls[y] = 2
gs[x] = 3,gs[y] = 4
x = 100, y = 200
-----globals为None,相当于不提供, locals提供-----
d = 7
ls[x] = 1,ls[y] = 2
gs[x] = 3,gs[y] = 4
x = 100, y = 200
内置函数_eval的更多相关文章
- Entity Framework 6 Recipes 2nd Edition(11-12)译 -> 定义内置函数
11-12. 定义内置函数 问题 想要定义一个在eSQL 和LINQ 查询里使用的内置函数. 解决方案 我们要在数据库中使用IsNull 函数,但是EF没有为eSQL 或LINQ发布这个函数. 假设我 ...
- Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数
dual单行单列的隐藏表,看不见 但是可以用,经常用来调内置函数.不用新建表 时间函数 sysdate 系统当前时间 add_months 作用:对日期的月份进行加减 写法:add_months(日期 ...
- python内置函数
python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...
- DAY5 python内置函数+验证码实例
内置函数 用验证码作为实例 字符串和字节的转换 字符串到字节 字节到字符串
- python之常用内置函数
python内置函数,可以通过python的帮助文档 Build-in Functions,在终端交互下可以通过命令查看 >>> dir("__builtins__&quo ...
- freemarker内置函数和用法
原文链接:http://www.iteye.com/topic/908500 在我们应用Freemarker 过程中,经常会操作例如字符串,数字,集合等,却不清楚Freemrker 有没有类似于Jav ...
- set、def、lambda、内置函数、文件操作
set : 无序,不重复,可以嵌套 .add (添加元素) .update(接收可迭代对象)---等于批量 添加 .diffrents()两个集合不同差 .sysmmetric difference( ...
- SQL Server 内置函数、临时对象、流程控制
SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...
- Python-Day3知识点——深浅拷贝、函数基本定义、内置函数
一.深浅拷贝 import copy #浅拷贝 n1={'k1':'wu','k2':123,'k3':['carl',852]} n2=n1 n3=copy.copy(n1) print(id(n1 ...
随机推荐
- HDU 4879 ZCC loves march (并查集,set,map)
题面以及思路:https://blog.csdn.net/glqac/article/details/38402101 代码: #include <bits/stdc++.h> #defi ...
- iOS 地图(添加大头针)
首先在工程中导入MapKit.framework库文件 #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <U ...
- Ubuntu 添加用户到sudoers
ubuntu上的用户有时候需要用到管理员权限,可以通过修改 /etc/sudoers 文件内容添加用户权限. 操作方式 1. 首先以root进入系统打开文件 sudo vim /etc/sudoers ...
- R: 常用操作:
################################################### #清除所有变量: rm(list=ls()) #查看变量类型 getwd() setwd() i ...
- 把数据分配到view
- Entity Framework Tutorial Basics(23):Add Single Entity
Add New Entity using DBContext in Disconnected Scenario: In this chapter you will learn how to add n ...
- PHP中抽象类与接口的区别
PHP中抽象类与接口的区别 抽象类abstract 概念 定义为抽象的类不能被实例化.任何一个类,如果有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的类. 继承一个抽象类的时候,子类必须定义 ...
- 关于Spring注解配置的步骤
今天分享一下 关于Spring注解配置的流程 1 导包:如下图所示 2 书写User和Car类 代码如下 package cn.lijun.bean; public class Car { priv ...
- C#数据类型及差异(复习专用)
一.数据类型 值类型 类型 描述 范围 默认值 bool 布尔值 True 或 False False byte 8 位无符号整数 0 到 255 0 char 16 位 Unicode 字符 U + ...
- 控制某个panel的display样式
"我想在onload方法里把panel的 style 里的 display 属性变成 none.我的页面由于有一些脚本,触发某些事件之后还想显示这个panel,不想用Panel3.Visib ...