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的更多相关文章

  1. Entity Framework 6 Recipes 2nd Edition(11-12)译 -> 定义内置函数

    11-12. 定义内置函数 问题 想要定义一个在eSQL 和LINQ 查询里使用的内置函数. 解决方案 我们要在数据库中使用IsNull 函数,但是EF没有为eSQL 或LINQ发布这个函数. 假设我 ...

  2. Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数

    dual单行单列的隐藏表,看不见 但是可以用,经常用来调内置函数.不用新建表 时间函数 sysdate 系统当前时间 add_months 作用:对日期的月份进行加减 写法:add_months(日期 ...

  3. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  4. DAY5 python内置函数+验证码实例

    内置函数 用验证码作为实例 字符串和字节的转换 字符串到字节 字节到字符串

  5. python之常用内置函数

    python内置函数,可以通过python的帮助文档 Build-in Functions,在终端交互下可以通过命令查看 >>> dir("__builtins__&quo ...

  6. freemarker内置函数和用法

    原文链接:http://www.iteye.com/topic/908500 在我们应用Freemarker 过程中,经常会操作例如字符串,数字,集合等,却不清楚Freemrker 有没有类似于Jav ...

  7. set、def、lambda、内置函数、文件操作

    set : 无序,不重复,可以嵌套 .add (添加元素) .update(接收可迭代对象)---等于批量 添加 .diffrents()两个集合不同差 .sysmmetric difference( ...

  8. SQL Server 内置函数、临时对象、流程控制

    SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...

  9. Python-Day3知识点——深浅拷贝、函数基本定义、内置函数

    一.深浅拷贝 import copy #浅拷贝 n1={'k1':'wu','k2':123,'k3':['carl',852]} n2=n1 n3=copy.copy(n1) print(id(n1 ...

随机推荐

  1. 使用Get进行Http通信

    --------------siwuxie095 有道翻译官网:http://fanyi.youdao.com/ 找到官网页面下方的 有道翻译API,选择 调用数据接口,申请一个 key (申请内容可 ...

  2. php学习笔记-定义数组和引用数组元素

    上图包含两种定义数组的方法,一种是通过数组索引来创建的,一种是通过array()函数来创建的.

  3. 10.model/view实例(1)

    1.如图显示一个2x3的表格: 思考: 1.QTableView显示这个表 2.QAbstractTableModel作为模型类. 3.文档中找到subclass的描述 When subclassin ...

  4. Log4Net 调试时输出sql到 视图->输出的sql语句

    1.log4net.xml <?xml version="1.0" encoding="utf-8" ?> <!--log4net 配置--& ...

  5. Python程序设计5——函数

    本章介绍Python中模块和函数的概念. Python程序是由包.模块和函数三者组成,包是由一系列模块组成的集合,模块是处理某一类问题的函数和类的集合.Python提供的许多工具包和模块安装在Pyth ...

  6. Java并发之FutureTask

    FutureTask实现了Runnable和Future接口,是一个可取消的异步任务.利用开始和取消计算的方法.查询计算是否完成的方法和获取计算结果的方法,此类提供了对 Future 的基本实现.仅在 ...

  7. python使用基础(win10)

    1.安装 官网下载:https://www.python.org/ 请选择2.X版本 2.从命令提示符打开python 直接输入python点enter即可 查看python版本输入python -V ...

  8. excel导入工具

    1 介绍 excel导入工具 整个项目的代码结构如下 \---excelExport # 导出工具包 | AsyncExportExcel.java #多线程导出 | ExcelImport.java ...

  9. w2008 R2 401 - 未授权: 由于凭据无效,访问被拒绝。

    1.打开服务器的"IIS信息服务管理器"-->选择你发布的网站-->选择功能视图中的"身份验证"-->右键匿名身份验证,选择"编辑& ...

  10. c# sql省市联动

    C# sql省市联动 USE [Book] GO ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ...