delattr(object, name) setattr() 相关的函数。实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果 对象允许,该函数将删除指定的属性。例如 delattr(x, 'foobar') 等价于 del x.foobar 。
class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
创建一个新的字典。dict 对象是一个字典类。参见dict 和映射类型 --- dict 了解这个类。 其他容器类型,请参见内置的list、set 和tuple 类,以及collections 模块。
dir([object]) 如果没有实参,则返回当前本地作用域中的名称列表。如果有实参,它会尝试返回该对象的有效属 性列表。 如果对象有一个名为 __dir__() 的方法,那么该方法将被调用,并且必须返回一个属性列表。这 允许实现自定义 __getattr__() 或 __getattribute__() 函数的对象能够自定义dir() 来报 告它们的属性。如果对象不提供 __dir__(),这个函数会尝试从对象已定义的__dict__ 属性和类型对象收集信 息。结果列表并不总是完整的,如果对象有自定义 __getattr__(),那结果可能不准确。 默认的dir() 机制对不同类型的对象行为不同,它会试图返回最相关而不是最全的信息: ? 如果对象是模块对象,则列表包含模块的属性名称。 ? 如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性。 ? 否则,列表包含对象的属性名称,它的类属性名称,并且递归查找它的类的所有基类的属性。 返回的列表按字母表排序。例如:
>>> import struct
>>> dir() # show the names in the module namespace ['__builtins__', '__name__', 'struct']
>>> dir(struct) # show the names in the struct module ['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 的属性不包含在结果列表中。
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) 。
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
eval(expression[, globals[, locals]]) 实参是一个字符串,以及可选的 globals 和 locals。globals 实参必须是一个字典。locals 可以是任何映 射对象。 expression 参数会作为一个 Python 表达式(从技术上说是一个条件列表)被解析并求值,并使用 globals 和 locals 字典作为全局和局部命名空间。如果 globals 字典存在且不包含以 __builtins__为键的值,则会在解析 expression 之前插入以此为键的对内置模块builtins 的引用。这意味着 expression 通常具有对标准builtins 模块的完全访问权限且受限的环境会被传播。如果省略 locals 字典则其默认值为 globals 字典。如果两个字典同时省略,则表达式执行时会使用eval() 被调用的 环境中的 globals 和 locals。请注意,eval() 并没有对外围环境下的 (非局部) 嵌套作用域 的访问权限。 返回值就是表达式的求值结果。语法错误将作为异常被报告。例如: >>> x = 1 >>> eval('x+1') 2 这个函数也可以用来执行任何代码对象(如compile() 创建的)。这种情况下,参数是代码对象, 而不是字符串。如果编译该对象时的 mode 实参是 'exec' 那么eval() 返回值为 None 。 提示:exec() 函数支持动态执行语句。globals() 和locals() 函数各自返回当前的全局和本 地字典,因此您可以将它们传递给eval() 或exec() 来使用。 另外可以参阅ast.literal_eval(),该函数可以安全执行仅包含文字的表达式字符串。 引发一个审计事件 exec 附带参数 code_object。
exec(object[, globals[, locals]]) 这个函数支持动态执行 Python 代码。object 必须是字符串或者代码对象。如果是字符串,那么该字 符串将被解析为一系列 Python 语句并执行(除非发生语法错误)。1 如果是代码对象,它将被直接执 行。在任何情况下,被执行的代码都需要和文件输入一样是有效的(见参考手册中关于文件输入的 章节)。请注意即使在传递给exec() 函数的代码的上下文中,return 和 yield 语句也不能在函 数定义之外使用。该函数返回值是 None 。 无论哪种情况,如果省略了可选项,代码将在当前作用域内执行。如果只提供了 globals,则它必须 是一个字典(不能是字典的子类),该字典将同时被用于全局和局部变量。如果同时提供了 globals 和 locals,它们会分别被用于全局和局部变量。如果提供了 locals,则它可以是任何映射对象。请记 住在模块层级上,globals 和 locals 是同一个字典。如果 exec 得到两个单独对象作为 globals 和 locals, 则代码将如同嵌入类定义的情况一样执行。 如果 globals 字典不包含 __builtins__ 键值,则将为该键插入对内建builtins 模块字典的引 用。因此,在将执行的代码传递给exec() 之前,可以通过将自己的 __builtins__ 字典插入到 globals 中来控制可以使用哪些内置代码。 引发一个审计事件 exec 附带参数 code_object。 注解: 内置globals() 和locals() 函数各自返回当前的全局和本地字典,因此可以将它们传递 给exec() 的第二个和第三个实参。 注解: 默认情况下,locals 的行为如下面locals() 函数描述的一样:不要试图改变默认的 locals 字典。如果您想在exec() 函数返回时知道代码对 locals 的变动,请明确地传递 locals 字典。
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 中元素的补 充函数。
class float([x ]) 返回从数字或字符串 x 生成的浮点数。 如果实参是字符串,则它必须是包含十进制数字的字符串,字符串前面可以有符号,之前也可以有 空格。可选的符号有 '+' 和 '-' ;'+' 对创建的值没有影响。实参也可以是 NaN(非数字)、正负 无穷大的字符串。确切地说,除去首尾的空格后,输入必须遵循以下语法: sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" numeric_value ::= floatnumber | infinity | nan numeric_string ::= [sign] numeric_value 这里,floatnumber 是 Python 浮点数的字符串形式,详见 floating。字母大小写都可以,例 如,“inf”、“Inf”、“INFINITY”、“iNfINity”都可以表示正无穷大。 另一方面,如果实参是整数或浮点数,则返回具有相同值(在 Python 浮点精度范围内)的浮点数。 如果实参在 Python 浮点精度范围外,则会触发OverflowError。 对于一个普通 Python 对象 x,float(x) 会委托给 x.__float__()。如果 __float__() 未定 义则将回退至 __index__()。 如果没有实参,则返回 0.0 。 例如: >>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf 数字类型 --- int, float, complex 描述了浮点类型。 在 3.6 版更改: 您可以使用下划线将代码文字中的数字进行分组。 在 3.7 版更改: x 现在只能作为位置参数。 在 3.8 版更改: 如果 __float__() 未定义则回退至 __index__()。
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。
class frozenset([iterable ]) 返回一个新的frozenset 对象,它包含可选参数 iterable 中的元素。frozenset 是一个内置的类。 有关此类的文档,请参阅frozenset 和集合类型 --- set, frozenset。 请参阅内建的set、list、tuple 和dict 类,以及collections 模块来了解其它的容器。
getattr(object, name[, default]) 返回对象命名属性的值。name 必须是字符串。如果该字符串是对象的属性之一,则返回该属性的值。例如,getattr(x, 'foobar') 等同于 x.foobar。如果指定的属性不存在,且提供了 default 值,则返回它,否则触发AttributeError。
globals() 返回表示当前全局符号表的字典。这总是当前模块的字典(在函数或方法中,不是调用它的模块, 而是定义它的模块)。
hasattr(object, name) 该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True,否则返回 False。(此功能是通过调用 getattr(object, name) 看是否有AttributeError 异常来实 现的。)