Python学习进阶教程(4)—内置函数(之四)

(本号正在连续推出以Python官网文档为主线的完整的系统的学习Python的系列文章和视频,感兴趣的朋友们欢迎搜索关注。本文及后续文章如无特别声明均以Windows平台作为演示平台,Python版本为:3.8.1)


注意:开始学习“Python学习进阶教程”系列内容前须已经学习过“Python学习入门教程”系列内容】


hasattr(object, name)

参数是一个对象和一个字符串。如果字符串是对象属性的名称,则结果为True;如果不是,则为False。(这是通过调用getattr(object, name)并查看它是否引发AttributeError来实现的。)

hash(object)

返回对象的哈希值(如果它有哈希值)。哈希值是整数。它们用于在字典查找期间快速比较典键。比较相等的数值具有相同的哈希值(即使它们是不同类型的,如1和1.0)。

注意:对于使用定制的__hash__()方法的对象,hash()会根据主机的位宽截断返回值。

help([object])

调用内置的帮助系统。此功能用于交互式。如果没有给出参数,交互式帮助系统将在解释器控制台启动。如果参数是字符串,那么该字符串将作为模块、函数、类、方法、关键字或文档主题的名称进行查找,并在控制台上打印帮助页面。如果参数是任何其他类型的对象,则生成该对象的帮助页。

注意,在调用help()的结果中,如果一个斜杠(/)出现在某个函数的参数列表中,意味着斜杠之前的参数是位置位置参数。(相关位置参数的内容在“Python学习入门(9)—函数“中已经介绍过)

该函数是由site模块加到内置空间中的。

hex(x)

将整数转换为以“0x”为前缀的小写十六进制字符串。如果x不是Python的int对象,它必须定义一个返回整数的__index__()方法。

例子:

<code>>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'/<code>

如果想要将整数转换为大写或带前缀或不带前缀的十六进制字符串,可以使用以下任何一种方法:

<code>>>> '%#x' % 255, '%x' % 255, '%X' % 255
('0xff', 'ff', 'FF')
>>> format(255, '#x'), format(255, 'x'), format(255, 'X')
('0xff', 'ff', 'FF')
>>> f'{255:#x}', f'{255:x}', f'{255:X}'
('0xff', 'ff', 'FF')/<code>

注意:要获得浮点数的十六进制字符串表示形式,使用float.hex()方法。

id(object)

返回对象的“identity”。这是一个整数,它保证在对象的生命周期内是唯一且不变的。具有非重叠生存期的两个对象可能具有相同的id()值。CPython实现细节:这是内存中对象的地址。

input([prompt])

如果出现了prompt参数,则将其写入标准输出,不带换行符。然后,该函数从输入中读取一行,将其转换为字符串(去掉尾随的换行符),并返回该字符串。读取EOF时,会引发EOFError。

例子:

<code>>>> s = input('--> ') 
--> Monty Python's Flying Circus
>>> s 
"Monty Python's Flying Circus"/<code>

如果加载了readline模(用于Unix的),那么input()将使用它来提供复杂的行编辑和历史记录功能。

在读取输入之前,会引发以prompt为参数的审计事件builtins.input。

成功读取输入后,会引发以结果为参数的审计事件builtins.input/result。

class int([x])

class int(x, base=10)

返回一个由数字或字符串x构造的整数对象,如果没有给出参数,则返回0。如果x定义了__int__ (), 则int (x)返回x.__int__ ()。如果x定义了__index__(),它将返回x.__ index__()。如果x定义了__trunc__(),它将返回x.__trunc__()。对于浮点数,它会向零截断。

如果x不是数字或给定了base,则x必须是字符串、字节或字节数组实例,表示以base为基数的整数的字面值。字面值前面可以加上+或-(中间没有空格),或被空白包围,这些都是可选的。base-n字面值由数字0到n-1组成,A到z(或A到z)的值为10到35。默认基数是10,允许的值是0和2到36。Base-2、-8和-16字面值可以选择以0b/ 0B、0o/ 0O或0x/ 0X作为前缀,就像代码中的整数字面值一样。Base 0表示精确地解释为代码字面值,因此实际的基数是2、8、10或16,因此int('010', 0)是不合法的,而int('010')是合法的,int('010', 8)也是合法的。

isinstance(object, classinfo)

如果参数object是classinfo参数的实例,或者是它的一个(直接、间接或虚拟)子类的实例,则返回True。如果对象不是给定类型的对象,则该函数始终返回False。如果classinfo是类型对象的元组(或者递归地,其他类似的元组),如果对象是其中任一类型的实例,则返回True。如果classinfo不是类型或类型的元组或这类元组的元组,则会引发类型错误异常。

issubclass(class, classinfo)

如果class是classinfo的子类(直接、间接或虚拟),则返回True。注意:一个类被认为是它自己的子类。classinfo可能是类对象的元组,在这种情况下,classinfo中的每个条目都会被检查。在任何其他情况下,都会引发一个TypeError异常。

iter(object[, sentinel])


返回一个迭代器对象。根据第二个参数的存在与否,对第一个参数的解释也是不同的。如果没有第二个参数,那么对象必须是一个支持迭代协议(__iter__()方法)的集合对象,或者它必须支持序列协议(从0开始的整数为参数的__getitem__()方法),如果它不支持这两个协议中的任何一个,就会引发类型错误。如果给出了第二个参数sentinel,那么object必须是一个可调用的对象。在此情况下,每次调用创建的迭代器的__next__()方法时都将空参数的形式调用object;如果返回的值等于sentinel,则将引发StopIteration,否则将返回该值。

iter()的第二种形式的一个有用的应用是构建一个块读取器。例如,从一个二进制数据库文件中读取固定宽度的块,直到文件结束:

<code>from functools import partial
with open('mydata.db', 'rb') as f:
    for block in iter(partial(f.read, 64), b''):
        process_block(block)/<code>

len(s)

返回一个对象的长度(项的数量)。参数可以是序列(如字符串、字节、元组、列表或范围)或集合(如字典、集合或冻结集合)。

class list([iterable])

list实际上是一个可变序列类型,而不是一个函数,已在“Python学习入门(6)—列表(list)”中详细介绍过。

locals()

更新并返回一个表示当前本地符号表的字典。自由变量在函数块中调用时由locals()返回,但在类块中调用时不返回自由变量。注意,在模块级,局部变量()和全局变量()是同一个字典。

注意:此词典的内容不得修改;更改可能对解释器使用的局部变量和自由变量的值不会生效。

map(function, iterable, ...)

返回一个迭代器,该迭代器将function应用于iterable的每一项来生成结果。如果传递了另外的iterable参数,函数必须能接受这么多的参数,并并行地应用于所有可迭代的项。对于多个迭代器,当最短的迭代器用完时,迭代器将停止。对于函数输入已经安排为参数元组的情况,请参阅itertools.starmap()。

max(iterable, *[, key, default])

max(arg1, arg2, *args[, key])

返回iterable中或两个或多个参数中最大的项。

如果提供了一个位置参数,那么它应该是一个可迭代的对象。返回值为此可迭代的对象中最大的项。如果提供了两个或多个位置参数,则返回最大的位置参数。

有两个可选的关键字参数。key参数指定一个单参数排序函数,类似于list.sort()。default参数指定了当提供的iterable为空时返回的对象。如果iterable为空且未提供default,则会引发ValueError。

如果多个项是最大的,则函数返回遇到的第一个项。

class memoryview(obj)

返回一个由给定参数创建的“内存视图”对象。

min(iterable, *[, key, default])

min(arg1, arg2, *args[, key])

返回可迭代的对象中或两个或多个参数中最小的项。

如果提供了一个位置参数,那么它应该是一个可迭代对象,并返回可迭代对象中最小的项。如果提供了两个或多个位置参数,则返回最小的位置参数。

有两个可选的关键字参数。key参数指定一个单参数排序函数,类似于list.sort()。default参数指定了当提供的iterable为空时返回的对象。如果iterable为空且未提供默认值,则会引发ValueError。

如果有多个条目最小,则函数返回遇到的第一个条目。

next(iterator[, default])

通过调用iterator的__next__()方法从迭代器中检索下一项。如果提供了default,则在迭代器耗尽时返回default,否则将引发StopIteration.

【关于"标准库内置函数"的内容本篇未完,下篇将继续讲解】

【结束】


分享到:


相關文章: