资讯专栏INFORMATION COLUMN

Python标准库---2、内置函数(D-E-F)

Fourierr / 2245人阅读

摘要:如果对象允许,该函数将删除指定的属性。返回值为表达式求值的结果。语法错误将作为异常被报告。该函数返回值是。例如数字类型描述了浮点类型。将转换为控制的格式化表示。上一篇文章标准库内置函数下一篇文章标准库内置函数

上一篇文章:Python标准库---1、内置函数(A-B-C)
下一篇文章:Python标准库---3、内置函数(G-H-I-J-K)
内置函数:

15. delattr(object, name)
setattr() 相关的函数。实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果对象允许,该函数将删除指定的属性。例如 delattr(x, "foobar") 等价于 del x.foobar 。
16. class dict(**kwarg)

class dict(mapping, **kwarg)
class dict(iterable, **kwarg)

创建一个新的字典。dict 对象是一个字典类。参见 dict 和 映射类型 --- dict 了解这个类。
其他容器类型,请参见内置的 list、set 和 tuple 类,以及 collections 模块。
17. dir([object])
如果没有实参,则返回当前本地作用域中的名称列表。如果有实参,它会尝试返回该对象的有效属性列表。

如果对象有一个名为 __dir__() 的方法,那么该方法将被调用,并且必须返回一个属性列表。这允许实现自定义 __getattr__() 或 __getattribute__() 函数的对象能够自定义 dir() 来报告它们的属性。

如果对象不提供 dir__(),这个函数会尝试从对象已定义的 __dict 属性和类型对象收集信息。结果列表并不总是完整的,如果对象有自定义 __getattr__(),那结果可能不准确。

默认的 dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息:

如果对象是模块对象,则列表包含模块的属性名称。

如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。

否则,列表包含对象的属性名称,它的类属性名称,并且递归查找它的类的所有基类的属性。

返回的列表按字母表排序。例如:

>>> import struct
# show the names in the module namespace  
# doctest: +SKIP

>>> dir()   
["__builtins__", "__name__", "struct"]

# show the names in the struct module 
# doctest: +SKIP
>>> dir(struct)   
["Struct", "__all__", "__builtins__", "__cached__", "__doc__", "__file__",
 "__initializing__", "__loader__", "__name__", "__package__",
 "_clearcache", "calcsize", "error", "pack", "pack_into",
 "unpack", "unpack_from"]
 
>>> class Shape:
...     def __dir__(self):
...         return ["area", "perimeter", "location"]
>>> s = Shape()
>>> dir(s)
["area", "location", "perimeter"]

注解 因为 dir() 主要是为了便于在交互式时使用,所以它会试图返回人们感兴趣的名字集合,而不是试图保证结果的严格性或一致性,它具体的行为也可能在不同版本之间改变。例如,当实参是一个类时,metaclass 的属性不包含在结果列表中。

18. divmod(a, b)
它将两个(非复数)数字作为实参,并在执行整数除法时返回一对商和余数。对于混合操作数类型,适用双目算术运算符的规则。对于整数,结果和 (a // b, a % b) 一致。对于浮点数,结果是 (q, a % b) ,q 通常是 math.floor(a / b) 但可能会比 1 小。在任何情况下, q * b + a % b 和 a 基本相等;如果 a % b 非零,它的符号和 b 一样,并且 0 <= abs(a % b) < abs(b) 。
19. enumerate(iterable, start=0)
返回一个枚举对象。iterable 必须是一个序列,或 iterator,或其他支持迭代的对象。 enumerate() 返回的迭代器的 __next__() 方法返回一个元组,里面包含一个计数值(从 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
20. eval(expression, globals=None, locals=None)
实参是一个字符串,以及可选的 globals 和 locals。globals 实参必须是一个字典。locals 可以是任何映射对象。

expression 参数会作为一个 Python 表达式(从技术上说是一个条件列表)被解析并求值,使用 globals 和 locals 字典作为全局和局部命名空间。 如果 globals 字典存在且不包含以 builtins 为键的值,则会在解析 expression 之前插入以此为键的对内置模块 builtins 的字典的引用。 这意味着 expression 通常具有对标准 builtins 模块的完全访问权限且受限的环境会被传播。 如果省略 locals 字典则其默认值为 globals 字典。 如果两个字典同时省略,表达式会在 eval() 被调用的环境中执行。 返回值为表达式求值的结果。 语法错误将作为异常被报告。 例如:

>>> x = 1
>>> eval("x+1")
2
这个函数也可以用来执行任何代码对象(如 compile() 创建的)。这种情况下,参数是代码对象,而不是字符串。如果编译该对象时的 mode 实参是 "exec" 那么 eval() 返回值为 None 。

提示: exec() 函数支持动态执行语句。 globals() 和 locals() 函数各自返回当前的全局和本地字典,因此您可以将它们传递给 eval() 或 exec() 来使用。

另外可以参阅 ast.literal_eval(),该函数可以安全执行仅包含文字的表达式字符串。

21. exec(object[, globals[, locals]])
这个函数支持动态执行 Python 代码。object 必须是字符串或者代码对象。如果是字符串,那么该字符串将被解析为一系列 Python 语句并执行(除非发生语法错误)。1 如果是代码对象,它将被直接执行。在任何情况下,被执行的代码都需要和文件输入一样是有效的(见参考手册中关于文件输入的章节)。请注意即使在传递给 exec() 函数的代码的上下文中,return 和 yield 语句也不能在函数定义之外使用。该函数返回值是 None 。

无论哪种情况,如果省略了可选参数,代码将在当前范围内执行。如果提供了 globals 参数,就必须是字典类型,而且会被用作全局和本地变量。如果同时提供了 globals 和 locals 参数,它们分别被用作全局和本地变量。如果提供了 locals 参数,则它可以是任何映射型的对象。请记住在模块层级,全局和本地变量是相同的字典。如果 exec 有两个不同的 globals 和 locals 对象,代码就像嵌入在类定义中一样执行。

如果 globals 字典不包含 builtins 键值,则将为该键插入对内建 builtins 模块字典的引用。因此,在将执行的代码传递给 exec() 之前,可以通过将自己的 builtins 字典插入到 globals 中来控制可以使用哪些内置代码。

注解 内置 globals() 和 locals() 函数各自返回当前的全局和本地字典,因此可以将它们传递给 exec() 的第二个和第三个实参。
注解 默认情况下,locals 的行为如下面 locals() 函数描述的一样:不要试图改变默认的 locals 字典。如果您想在 exec() 函数返回时知道代码对 locals 的变动,请明确地传递 locals 字典。

22. filter(function, iterable)
用 iterable 中函数 function 返回真的那些元素,构建一个新的迭代器。iterable 可以是一个序列,一个支持迭代的容器,或一个迭代器。如果 function 是 None ,则会假设它是一个身份函数,即 iterable 中所有返回假的元素会被移除。

请注意, filter(function, iterable) 相当于一个生成器表达式,当 function 不是 None 的时候为 (item for item in iterable if function(item));function 是 None 的时候为 (item for item in iterable if item) 。

请参阅 itertools.filterfalse() 了解,只有 function 返回 false 时才选取 iterable 中元素的补充函数。

23. class float([x])
返回从数字或字符串 x 生成的浮点数。

如果实参是字符串,则它必须是包含十进制数字的字符串,字符串前面可以有符号,之前也可以有空格。可选的符号有 "+" 和 "-" ; "+" 对创建的值没有影响。实参也可以是 NaN(非数字)、正负无穷大的字符串。确切地说,除去首尾的空格后,输入必须遵循以下语法:

sign           ::=  "+" | "-"
infinity       ::=  "Infinity" | "inf"
nan            ::=  "nan"
numeric_value  ::=  floatnumber | infinity | nan
numeric_string ::=  [sign] numeric_value
这里, floatnumber 是 Python 浮点数的字符串形式,详见 浮点数字面值。字母大小写都可以,例如,“inf”、“Inf”、“INFINITY”、“iNfINity” 都可以表示正无穷大。

另一方面,如果实参是整数或浮点数,则返回具有相同值(在 Python 浮点精度范围内)的浮点数。如果实参在 Python 浮点精度范围外,则会触发 OverflowError。

对于一般的 Python 对象 x , float(x) 指派给 x.__float__() 。

如果没有实参,则返回 0.0 。

例如:

>>>
>>> float("+1.23")
1.23
>>> float("   -12345
")
-12345.0
>>> float("1e-003")
0.001
>>> float("+1E6")
1000000.0
>>> float("-Infinity")
-inf
数字类型 --- int, float, complex 描述了浮点类型。

在 3.6 版更改: 您可以使用下划线将代码文字中的数字进行分组。

在 3.7 版更改: x 现在只能作为位置参数。

24. format(value[, format_spec])
将 value 转换为 format_spec 控制的“格式化”表示。format_spec 的解释取决于 value 实参的类型,但是大多数内置类型使用标准格式化语法:格式规格迷你语言。

默认的 format_spec 是一个空字符串,它通常和调用 str(value) 的结果相同。

调用 format(value, format_spec) 会转换成 type(value).__format__(value, format_spec) ,所以实例字典中的 __format__() 方法将不会调用。如果搜索到 object 有这个方法但 format_spec 不为空,format_spec 或返回值不是字符串,会触发 TypeError 异常。

在 3.4 版更改: 当 format_spec 不是空字符串时, object().__format__(format_spec) 会触发 TypeError。

25. class frozenset([iterable])
返回一个新的 frozenset 对象,它包含可选参数 iterable 中的元素。 frozenset 是一个内置的类。有关此类的文档,请参阅 frozenset 和 集合类型 --- set, frozenset。

请参阅内建的 set、list、tuple 和 dict 类,以及 collections 模块来了解其它的容器。

上一篇文章:Python标准库---1、内置函数(A-B-C)
下一篇文章:Python标准库---3、内置函数(G-H-I-J-K)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43985.html

相关文章

  • Python标准---3、内置函数(G-H-I-J-K)

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置函数内置函数返回对象命名属性的值。返回表示当前全局符号表的字典。例如,从二进制数据库文件中读取固定宽度的块,直至到达文件的末尾上一篇文章标准库内置函数下一篇文章标准库内置函数 上一篇文章:Python标准库---2、内置函数(D-E-F)下一篇文章:Python标准库---4、内置函数(L-M-N-O) 内置函数: showImg(http...

    gself 评论0 收藏0
  • Python标准---1、内置函数(A-B-C)

    摘要:内置函数返回一个数的绝对值。使用标准的真值测试过程来转换。因此,构造函数的实参和相同。实参的合法范围是到进制表示是。数字类型描述了复数类型。上一篇文章标准库简介下一篇文章标准库内置函数 上一篇文章:Python标准库----0、简介下一篇文章:Python标准库---1、内置函数(D-E-F) Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。以下按字母表顺序列出它...

    bingo 评论0 收藏0
  • Python标准---8、内置常量

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置类型逻辑值检测布尔运算比较内置常量有少数的常量存在于内置命名空间中。给赋值是非法的并会引发。如果所有尝试都返回,则解释器将引发适当的异常。如果没有以选项启动,则此常量为真值。 上一篇文章:Python标准库---7、内置函数(V-W-X-Y-Z)下一篇文章:Python标准库---9、内置类型:逻辑值检测、布尔运算、比较 内置常量 有少数的...

    gplane 评论0 收藏0
  • Python标准---16、内置类型:上下文管理器类型、其他、特殊属性

    摘要:退出运行时上下文并返回一个布尔值旗标来表明所发生的任何异常是否应当被屏蔽。除了实现上下文管理协议以外,不同类型不会被特殊处理。其中一些并不会被内置函数所列出。 上一篇文章:Python标准库---15、内置类型:集合类型、映射类型下一篇文章:Python标准库---17、内置异常 上下文管理器类型 Python 的 with 语句支持通过上下文管理器所定义的运行时上下文这一概念。 此...

    zhisheng 评论0 收藏0
  • Python标准---0、简介

    摘要:下一篇文章标准库内置函数标准库语言参考描述了语言的具体语法和语义,这份库参考则介绍了与一同发行的标准库。这个库也包含了内置函数和异常不需要语句就可以在所有代码中使用的对象。下一篇文章标准库内置函数 下一篇文章:Python标准库---1、内置函数 Python 标准库 Python 语言参考 描述了 Python 语言的具体语法和语义,这份库参考则介绍了与 Python 一同发行的标...

    mo0n1andin 评论0 收藏0

发表评论

0条评论

Fourierr

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<