前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3.6.5标准库文档(完整中文版)—内置函数(五)

Python3.6.5标准库文档(完整中文版)—内置函数(五)

作者头像
python鱼霸霸
发布2020-06-22 16:35:02
4350
发布2020-06-22 16:35:02
举报

本文主要介绍Python3.6.5标准库文档(完整中文版)---内置函数:enumerate(),eval(),exec()

enumerate(iterable,start = 0 )

返回一个枚举对象。iterable必须是一个序列,一个 迭代器或其他支持迭代的对象。 next()通过enumerate()返回的迭代器的方法 返回一个包含count的元组(从start开 始,默认值为0)以及从iterable迭代获得的值。

代码语言:javascript
复制
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] 
>>> list(enumerate(seasons)) 
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] 
>>> list(enumerate(seasons, start=1)) 
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

相当于:

代码语言:javascript
复制
def enumerate(sequence, start=0): 
    n = start 
    for elem in sequence: 
        yield n, elem 
        n += 1

eval(表达式,globals = None,locals = None )

参数是一个字符串和可选的全局变量和局部变量。如果提供,全局变量必须是字典。如果提供,本地可以是任何映射对象。

该表达参数分析,并作为一个Python表达式来使用(从技术上来说,一个条件列表)全局 和当地人 的字典作为全局和局部名字空间。如果globals字典存在并且缺少'__builtins__', 则 在解析表达式之前将当前全局变量复制到全局变量中。这意味着表达式通常可以完全访 问标准模块,并且传播受限制的环境。如果省略了本地字典,则默认为全局变量builtins字典。如果两个字典都被省略,表达式会在eval()调用的环境中执行。返回值是评估表达式的结果。语法错误被报告为例外。例:

代码语言:javascript
复制
>>> x = 1 
>>> eval('x+1') 
2

这个函数也可以用来执行任意代码对象(比如那些创建的对象compile())。在这种情况 下,传递一个代码对象而不是一个字符串。如果代码对象已经被编译'exec'为 模式参数,那么eval()返回值将是None。

提示:该exec() 函数支持动态执行语句。的globals()locals()功能返回当前全球和本地词典,分别,其可以是通过以绕过使用有用eval()或exec()。

请参阅有关ast.literal_eval()可以安全地使用仅包含文字的表达式评估字符串的函数。

在所有情况下,如果省略可选部件,则代码将在当前范围内执行。如果只提供全局变量, 则它必须是一个字典,它将用于全局变量和局部变量。如果全局和 当地人给出,它们分别 用于全局和局部变量。如果提供,本地人可以是任何映射对象。请记住,在模块级别,全 局变量和本地变量是相同的字典。如果exec获取两个单独的对象作为全局变量和本地变 量,那么代码将被嵌入类定义中执行。 如果globals字典不包含该键的值,则__builtins__将该内置模块的字典引用 builtins插入该键的下方。通过这种方式,您可以通过在将自己的__builtins__字典传递给全局变量之前,将其自己的字典插入到可执行代码中来控制可用的内置变量exec()注意: 内置的函数globals()并分别locals()返回当前的全局和本地字典,这可能对传递用作第二个和第三个参数非常有用exec()。 注意: 默认本地人的行为如locals()下面的功能所述:不应尝试对默认本地人字典的修 改。传递一个明确的当地人解释,如果你需要看到的代码的作用当地人后的功能exec()恢复。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • enumerate(iterable,start = 0 )
  • eval(表达式,globals = None,locals = None )
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档