python exec函数和eval函数_python中的exec()函数和eval()函数

exec()函数

exec函数用于执行存储在字符串中的python语句

>>> exec("x=1")

>>> x

但有时候,直接这样执行可能会污染我们的命名空间,比如下面的例子,我们使用python内置的abs函数求绝对值。

>>> abs(-)

>>> exec("abs='xyz'")

>>> abs(-)

File "", line , in

TypeError: "str" object is not callable

在执行abs函数时报错了,类型错误,字符串类型对象不能被调用,原因就在于我们使用exec函数将字符串xyz赋值给了abs,abs此时已经不再表示求绝对值的函数了。为了防止出现这种情况,我们在调用exec函数时,可以给它传递第二个参数——命名空间,即就是一个字典。

>>> abs(-1)

1

>>> scope = {}

>>> exec("abs='xyz'", scope)

>>> abs(-1)

1

>>>scope['abs']

'xyz'

这样,通过exec执行赋值语句创建的变量就位于scope中,不会污染我们的命名空间。

eval()函数

eval用于执行存储在字符串中的python表达式

>>> eval("1+2+3+4+5")

15

与exec函数一样,我们也可以给eval函数提供命名空间。

总结

1、exec函数执行的是python语句,没有返回值,eval函数执行的是python表达式,有返回值;

2、exec函数和eval函数都可以传入命名空间作为参数,实际上,可以向exec函数和eval函数提供两个命名空间,他们的函数定义为:

exec(source, globals=None, locals=None)

eval(source, globals=None, locals=None)

其中globals和locals都是可选参数,globals表示全局命名空间,必须是字典,locals表示局部命名空间,可以是任何映射。

3、需要注意的是,exec函数和eval函数都是将用户提供的字符串作为代码执行,将无法控制代码的行为,会带来严重的安全隐患,使用的时候要慎重。

Python中的exec、eval使用实例

Python中的exec.eval使用实例 这篇文章主要介绍了Python中的exec.eval使用实例,本文以简洁的方式总结了Python中的exec.eval作用,并给出实例,需要的朋友可以参考下 ...

python中的exec()、eval()以及complie()

参考博客:http://www.cnblogs.com/yyds/p/6276746.html 1.eval函数 函数的作用: 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式( ...

python中lambda,map,reduce,filter,zip函数

函数式编程 函数式编程(Functional Programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象.简单来讲,函 ...

Python中的exec、eval的区别

通过exec可以执行动态Python代码,类似Javascript的eval功能: 而Python中的eval函数可以计算Python表达式,并返回结果: (exec不返回结果,print(eval( ...

python中的exec和eval

exec 描述 exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码. 返回值 exec 返回值永远为 None. 需要说明的是在 ...

python中通过字符串名来调用函数

强调:eval()函数功能虽然强大,但是也很危险,这个方法需要慎重使用. 利用python中的内置函数 eval() ,函数说明: def eval(*args, **kwargs): # real ...

python 中一些常用的内置函数

一.常用内置函数 abs(x) 返回绝对值,参数为int float,非字符只能num all(iterable) 如果迭代对象里面的所有值都为真就返回True.all([1, 2, -7]) --- ...

【转】Python 中map、reduce、filter函数

转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...

随机推荐

WebForm 内置对象

内置对象: Response对象:响应请求 Response.Write(""); Respo ...

css学习笔记 1

对于一个页面,如何控制页面的结构就看如何去理解css的各个属性了,只有了解了css的各个属性后才能更有效的让css控制页面的任何一个结构. css的结构:选择符:{属性名1:属性值; 属性名2:属性值 ...

noip赛前小结4

真正的勇士,敢于面对惨淡的人生. 真正的OIer,敢于做ccop的题. 有种凄凉叫做这道数学题已经超出了我语文的理解范围. 有种愤怒叫做ccop类的信息题已经超出了我语文的理解范围和数学的理解范围. ...

升级ionic版本后,创建新项目报Error Initializing app错误解决

命令行,进入项目路径后,运行 ionic start myApp --v2 命令执行后,报如下错误 Installing npm packages...Error with start undefin ...

第19章 网络通信----UDP程序设计基础

用户数据报协议(UDP)是网络信息传输的另一种形式. 基于UDP通信的基本模式如下: (1)将数据打包(称为数据包),然后将数据包发往目的地. 发送数据包: 使用DatagramSocket()创建一 ...

40+ Sublime Text 最佳插件汇总

大家好!我想要收集最好的Sublime Text插件,因为这可以改善我们的工作流程.我搜索了许多网站,下面就是我的发现. WebInspector 调试JavaScript特别棒的工具,成熟的Subl ...

前端布局之Flex语法

前端布局一直是CSS的一个重点应用,然而基于盒子模型的传统布局方案,依赖display + position + float 属性,对于某些特殊的布局非常不方便,比如:垂直居中就不容易实现.针对这一情 ...

awk grep sed cut学习

awk学习网站 grep sed cut

wrk 压力测试 http benchmark POST接口

简单的 http 性能测试工具 wrk.git 一个简单的 http benchmark 工具, 能做很多基本的 http 性能测试. wrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原 ...

5款Mac极速下载工具推荐和下载

最近几年用到下载工具的情况其实很少了,比如几年前我们可能经常用下载工具下载视频.音乐.图书等资源,但今天的我们更多的在线看视频.在线听音乐了,偶尔用到下载的时候直接用浏览器自带的下载工具也完全够用了, ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值