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

2020/06/19 20:16 · python教程 ·  原创文章 · 72阅读 · 0评论

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

enumerate(iterable,start = 0 )

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

>>> 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')]

相当于:

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()调用的环境中执行。返回值是评估表达式的结果。语法错误被报告为例外。例:

>>> 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()恢复。

您可能感兴趣的文章

本文地址:http://www.pythongcs.cn/467.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 yubaba 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

 发表评论


表情