简介

eval与exec

evalexec都是python内置的可以执行python代码的函数,但它们之间有所区别。

  • eval(expression[, globals[, locals]])

    expression:需要执行的python表达式

    globals:需要注入的全局变量,必须为字典

    locals:需要注入的局部对象

    需要注意的是对于闭包中的嵌套作用域无法获取

    eval会返回表达式的执行结果
a = 1
command = "a > 2"
print(eval(command))
print(eval("b + 1", {"b": 1}))
False
2
  • exec(object[, globals[, locals]])

    object:需要执行的python代码,可以是代码对象

    globals:需要注入的全局变量,必须为字典

    locals:需要注入的局部对象

    exec支持动态执行python代码,如果是字符串则解析称python代码执行
command = "a = 2"
print(exec(command))
print(a) print(globals())
print(locals())
None
2
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000027E90174A30>, '__spec__': None, '__annotations__': {}, '__builtins__': <module
'builtins' (built-in)>, '__file__': 'd:\\python_study\\study\\2022_7_25\\test.py', '__cached__': None, 'a': 2, 'command': 'a = 2'}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000027E90174A30>, '__spec__': None, '__annotations__': {}, '__builtins__': <module
'builtins' (built-in)>, '__file__': 'd:\\python_study\\study\\2022_7_25\\test.py', '__cached__': None, 'a': 2, 'command': 'a = 2'}

globals()locals()分别是查看全局命名空间和局部命名空间的内置函数。

区别 eval exec
执行内容 只能是表达式之类的,无法使用赋值、声明变量等 任意合法的python代码即可
返回值 返回的是表达式的执行结果 返回均为None
声明的globals外界是否可用 不可用,只能在eval内部使用 不可用,只能在exec内部使用

iter(object[, sentinel])

返回一个迭代器对象

  • object:需要操作的对象,对象要求跟随是否存在第二个参数来决定

    1.当不存在第二个参数时,object必须时可迭代对象(包含__iter__方法)或者必须支持序列协议(有 getitem() 方法,且数字参数从 0 开始,

    2.当存在第二个参数时,每次迭代调用它的 next() 方法时都会不带实参地调用 object;如果返回的结果是 sentinel 则触发 StopIteration,否则返回调用结果。

    3.适合 iter() 的第二种形式的应用之一是构建块读取器。 例如,从二进制数据库文件中读取固定宽度的块,直至到达文件的末尾:
from functools import partial
with open('mydata.db', 'rb') as f:
for block in iter(partial(f.read, 64), b''):
process_block(block)

python 部分内置函数详解的更多相关文章

  1. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  2. python常用内置函数详解

    1.abs(x) 返回一个数字的绝对值.参数可以是整数或浮点数.如果参数是复数,则返回它的大小 n = abs(-12.5) print(n) # 12.5 2.all(iterable) 如果所有的 ...

  3. python3 内置函数详解

    内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小. >>> abs(-25) 25 >&g ...

  4. MYSQL常用内置函数详解说明

    函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...

  5. Python内置函数详解

    置顶   内置函数详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii https://docs.pyth ...

  6. Python内置函数详解——总结篇

    2个多月来,将3.5版本中的68个内置函数,按顺序逐个进行了自认为详细的解析,现在是时候进行个总结了.为了方便记忆,将这些内置函数进行了如下分类:     数学运算(7个)     类型转换(24个) ...

  7. 5.python内置函数详解

    内置函数 声明,转载至这位大哥,感谢之至 http://blog.csdn.net/oaa608868/article/details/53506188 关于分类 数学运算(7个) 类型转换(24个) ...

  8. python3内置函数详解

    内置函数 注:查看详细猛击这里 abs() 对传入参数取绝对值 bool() 对传入参数取布尔值, None, 0, "",[],{},() 这些参数传入bool后,返回False ...

  9. 11_Python的69个内置函数详解

    1.内置函数分类 思维导图: https://www.processon.com/view/link/5dcabc48e4b0bd68d813b24f 2.基础数据类型-和数字相关的函数(14) 数据 ...

随机推荐

  1. 好客租房23-react组件的两种创建方式(抽离为独立js)

    2.3抽离为单独组件 组件作为一个单独的个体,一般把每个组件放在单独的js中文件中 1创建hello.js 2在hello.js中导入React 3创建组件(函数或者类) hello.js子组件 // ...

  2. 【js奇妙说】如何跟非计算机从业者解释,为什么浮点数计算0.1+0.2不等于0.3?

    壹 ❀ 引 0.1+0.2不等于0.3,即便你不知道原理,但也应该听闻过这个问题,包括博主本人也曾在面试中被问到过此问题.很遗憾,当时只知道一句精度丢失,但是什么原因造成的精度丢失却不太清楚.而我在查 ...

  3. java基础题(5)

    6.常用API 6.1string类 1.动态字符串 描述 将一个由英文字母组成的字符串转换成从末尾开始每三个字母用逗号分隔的形式. 输入描述: 一个字符串 输出描述: 修改后的字符串 示例1 输入: ...

  4. C++调用C#的动态库dll

    以往我们经常是需要使用C#来调用C++的dll,这通过PInvoke就能实现.现在在实际的项目过程中,有时会遇到在C++的项目中调用某个C#的dll来完成特定的某个功能,我们都知道,Native C+ ...

  5. MySQL锁(乐观锁、悲观锁、多粒度锁)

    锁 并发事务可能出现的情况: 读-读事务并发:此时是没有问题的,读操作不会对记录又任何影响. 写-写事务并发:并发事务相继对相同的记录做出改动,因为写-写并发可能会产生脏写的情况,但是没有一个隔离级别 ...

  6. SpringBoot官方支持任务调度框架,轻量级用起来也挺香!

    大家好,我是二哥呀.定时任务的应用场景其实蛮常见的,比如说: 数据备份 订单未支付则自动取消 定时爬取数据 定时推送信息 定时发布文章 等等(想不出来了,只能等等来凑,,反正只要等的都需要定时,怎么样 ...

  7. 线程安全性-原子性之Atomic包

    先了解什么是线程安全性:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称为这个类是线程 ...

  8. 5-5配置Mysql复制 基于日志点的复制

    配置MySQL复制 基于日志点的复制配置步骤 设置简单密码(可以选择不需要) set GLOBAL validate_password_length=6; set global validate_pa ...

  9. WinForms拖控件拖到天荒地老

    更新记录: 2022年4月15日:本文迁移自Panda666原博客,原发布时间:2021年4月18日. 2022年4月15日:更新自动生成Web CURD工具. 说明 Winforms的控件拖起来是真 ...

  10. 文件输入输出处理-File

    大佬的理解-><IO流和File> 1.File类 File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的方法来操作文件.通过调用File类提供的各种方法, ...