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

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

作者: python攻城狮 | 来源:发表于2020-06-19 20:15 被阅读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()恢复。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/dlmbxktx.html