“Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。本章介绍字母h,i开头的10个函数。”
-
hasattr()
-
hash()
-
help()
-
hex()
-
id()
-
input()
-
int()
-
isinstance()
-
issubclass()
-
iter()
hasattr
(object, name)该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True,否则返回 False。(此功能是通过调用 getattr(object, name) 看是否有 AttributeError 异常来实现的。)
hash
(object)返回该对象的哈希值(如果它有的话)。哈希值是整数。它们在字典查找元素时用来快速比较字典的键。相同大小的数字变量有相同的哈希值(即使它们类型不同,如 1 和 1.0)。
help
([object])启动内置的帮助系统(此函数主要在交互式中使用)。如果没有实参,解释器控制台里会启动交互式帮助系统。如果实参是一个字符串,则在模块、函数、类、方法、关键字或文档主题中搜索该字符串,并在控制台上打印帮助信息。如果实参是其他任意对象,则会生成该对象的帮助页。
hex
(x)将整数转换为以“0x”为前缀的小写十六进制字符串。如果 x 不是 Python int 对象,则必须定义返回整数的 __index__() 方法。
1) > hex(
'0x1'
15) > hex(
'0xf'
255) > hex(
'0xff'
45) > hex(-
'-0x2d'
如果要获取浮点数的十六进制字符串形式,请使用 float.hex() 方法。
id
(object)返回对象的“标识值”。该值是一个整数,在此对象的生命周期中保证是唯一且恒定的。两个生命期不重叠的对象可能具有相同的 id() 值。
1 > x =
> id(x)
140715753281184
input
([prompt])如果存在 prompt 实参,则将其写入标准输出,末尾不带换行符。接下来,该函数从输入中读取一行,将其转换为字符串(除了末尾的换行符)并返回。当读取到 EOF 时,则触发 EOFError。
"type your name: ") > name = input(
type your name: alex
> name
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 必须是字符串、bytes、表示进制为 base 的整数字面值的 bytearray 实例。该文字前可以有 + 或 - (中间不能有空格),前后可以有空格。一个进制为 n 的数字包含 0 到 n-1 的数,其中 a 到 z (或 A 到 Z )表示 10 到 35。默认的 base 为 10 ,允许的进制有 0、2-36。2、8、16 进制的数字可以在代码中用 0b/0B 、 0o/0O 、 0x/0X 前缀来表示。进制为 0 将按照代码的字面量来精确解释,最后的结果会是 2、8、10、16 进制中的一个。所以 int('010', 0) 是非法的,但 int('010') 和 int('010', 8) 是合法的。
isinstance
(object, classinfo)如果参数 object 是参数 classinfo 的实例或者是其 (直接、间接或虚拟) 子类则返回 True。如果 object 不是给定类型的对象,函数将总是返回 False。如果 classinfo 是类型对象元组(或由其他此类元组递归组成的元组),那么如果 object 是其中任何一个类型的实例就返回 True。如果 classinfo 既不是类型,也不是类型元组或类型元组的元组,则将引发 TypeError 异常。
issubclass
(class, classinfo)如果 class 是 classinfo 的 (直接、间接或虚拟) 子类则返回 True。类会被视作其自身的子类。classinfo 也以是类对象的元组,在此情况下 classinfo 中的每个条目都将被检查。在任何其他情况下,都将引发 TypeError 异常。
iter
(object[, sentinel])返回一个 iterator 对象。根据是否存在第二个实参,第一个实参的解释是非常不同的。如果没有第二个实参,object 必须是支持迭代协议(有 __iter__() 方法)的集合对象,或必须支持序列协议(有 __getitem__() 方法,且数字参数从 0 开始)。如果它不支持这些协议,会触发 TypeError。如果有第二个实参 sentinel,那么 object 必须是可调用的对象。这种情况下生成的迭代器,每次迭代调用它的 __next__() 方法时都会不带实参地调用 object;如果返回的结果是 sentinel 则触发 StopIteration,否则返回调用结果。
文章评论