29、 hash(object):返回该对象的哈希值(如果它有的话)。哈希值是整数。它们在字典查找元素时用来快速比较字典的键。相同大小的数字变量有相同的哈希值(即使它们类型不同,如 1 和 1.0)。
>>> a=5
>>> hash(a) #数字
5
>>> b='hello world'
>>> hash(b) #字符串
7228082436234552886
>>> hash('hello world')
7228082436234552886
>>> hash((1,2,3)) #元组
529344067295497451
30、 help([object]):启动内置的帮助系统(此函数主要在交互式中使用)。如果没有实参,解释器控制台里会启动交互式帮助系统。如果实参是一个字符串,则在模块、函数、类、方法、关键字或文档主题中搜索该字符串,并在控制台上打印帮助信息。如果实参是其他任意对象,则会生成该对象的帮助页。
>>> help(str)
……显示帮助信息……
>>> help(list)
……显示帮助信息……
>>> a=[1,2,3,4]
>>> help(a)
……显示帮助信息……
31、 hex(x):将整数转换为以“0x”为前缀的小写十六进制字符串。如果 x 不是 Python int 对象,则必须定义返回整数的 index() 方法。
>>> hex(10)
'0xa'
>>> hex(234)
'0xea'
>>> hex(-12)
'-0xc'
>>> format(255,'X') #可以去除0x,并大写输出
'FF'
>>> f'{255:x}' #可以去除0x,并小写输出
'ff'
>>> format(255,'#X') #大写输出
'0Xff'
32、 id(object):返回对象的“标识值”。该值是一个整数,在此对象的生命周期中保证是唯一且恒定的。两个生命期不重叠的对象可能具有相同的 id() 值。
>>> x=1
>>> id(x)
8791523526304
>>> id(1)
8791523526304
>>> a='hello world'
>>> id(a)
44018800
>>> id('hello world') #字符串是不可变的,每次创建的id都是不同的
44019568
>>> id('hello world')
44000688
33、 input([prompt]):如果存在 prompt 实参,则将其写入标准输出,末尾不带换行符。接下来,该函数从输入中读取一行,将其转换为字符串(除了末尾的换行符)并返回。
>>> s = input("请输入你的姓名:")
请输入你的姓名:lilei
>>> print(s)
lilei
>>> s
'lilei'
34、 class int(x, base=10):返回一个基于数字或字符串 x 构造的整数对象,或者在未给出参数时返回 0。如果 x 不是数字,或者有 base 参数,x 必须是字符串、bytes、表示进制为 base 的 整数字面值 的 bytearray 实例。
>>> int() #参数为空,返回0
0
>>> int(11.3) #返回整数部分
11
>>> int(10.7) #返回整数部分
10
>>> int(-5.6) #返回整数部分
-5
>>> int(-4.2) #返回整数部分
-4
>>> int("123") #数字字符串返回数字
123
>>> int("-123.33") #参数不是数字或有base参数时候,第一个参数必须是字符串、bytes、表示进制为 base 的 整数字面值 的 bytearray 实例
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
int("-123.33")
ValueError: invalid literal for int() with base 10: '-123.33'
>>> int("100",base=4) #四进制的100 转化为十进制的16
16
>>> int("254",base=2) #base=2,第一个参数中就不能有大于2的值
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
int("254",base=2)
ValueError: invalid literal for int() with base 2: '254'
>>> int('fff',16)
4095
35、 isinstance(object, classinfo):如果参数 object 是参数 classinfo 的实例或者是其 (直接、间接或 虚拟) 子类则返回 True。 如果 object 不是给定类型的对象,函数将总是返回 False。 如果 classinfo 是类型对象元组(或由其他此类元组递归组成的元组),那么如果 object 是其中任何一个类型的实例就返回 True。 如果 classinfo 既不是类型,也不是类型元组或类型元组的元组,则将引发 TypeError 异常。
>>> isinstance(2,int) #数字2是int类型的对象
True
>>> isinstance('2',str) #字符串2是str类型的对象
True
>>> isinstance(2,(int,str,float)) #数字2是int、str、float三个构成的元组中的一种的对象
True
>>> isinstance([2],(int,str,list,tuple))
True
>>>
36、 issubclass(class, classinfo):如果 class 是 classinfo 的 (直接、间接或 虚拟) 子类则返回 True。 类会被视作其自身的子类。 classinfo 也以是类对象的元组,在此情况下 classinfo 中的每个条目都将被检查。 在任何其他情况下,都将引发 TypeError 异常。
>>> class a(object):
pass
>>> class b(a):
pass
>>> class c(b):
pass
>>> class d(c):
pass
>>> issubclass(b,a)
True
>>> issubclass(c,a)
True
>>> issubclass(d,a)
True
>>> issubclass(c,d)
False
37、 iter(object[, sentinel]):返回一个 iterator 对象。根据是否存在第二个实参,第一个实参的解释是非常不同的。如果没有第二个实参,object 必须是支持迭代协议(有 iter() 方法)的集合对象,或必须支持序列协议(有 getitem() 方法,且数字参数从 0 开始)。如果它不支持这些协议,会触发 TypeError。如果有第二个实参 sentinel,那么 object 必须是可调用的对象。这种情况下生成的迭代器,每次迭代调用它的 next() 方法时都会不带实参地调用 object;如果返回的结果是 sentinel 则触发 StopIteration,否则返回调用结果。
>>> iter([1,2,3,4])
<list_iterator object at 0x0000000002F024C0>
>>> it=iter("hello world")
>>> for i in it:
print(i,end="-")
h-e-l-l-o- -w-o-r-l-d-
适合 iter() 的第二种形式的应用之一是构建块读取器。 例如,从二进制数据库文件中读取固定宽度的块,直至到达文件的末尾:
from functools import partial
with open('mydata.db', 'rb') as f:
for block in iter(partial(f.read, 64), b''):
process_block(block)
38、 len(s):返回对象的长度(元素个数)。实参可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)。
>>> len("hello world")
11
>>> len(b'0000003')
7
>>> len((1,2,3,4,5,6,6))
7
>>> len({'a':1,'b':2})
2
39、 class list([iterable]):虽然被称为函数,list 实际上是一种可变序列类型。
>>> tu=(2,3,4,5,6)
>>> type(tu)
<class 'tuple'>
>>> print(list(tu))
[2, 3, 4, 5, 6]
>>> print(tu)
(2, 3, 4, 5, 6)
>>> str='hello world'
>>> print(str)
hello world
>>> print(list(str))
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
40、 locals():更新并返回表示当前本地符号表的字典。 在函数代码块但不是类代码块中调用 locals() 时将返回自由变量。 请注意在模块层级上,locals() 和 globals() 是同一个字典。
>>> def f(x): #两个局部变量:x,y
y=10*x
print(locals())
>>> f(4) #返回一个名字/值对的字典
{'x': 4, 'y': 40}
41、 map(function, iterable, …):返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器。 如果传入了额外的 iterable 参数,function 必须接受相同个数的实参并被应用于从所有可迭代对象中并行获取的项。 当有多个可迭代对象时,最短的可迭代对象耗尽则整个迭代就将结束。
>>> def fun(x):
return x*x
>>> m=map(fun,[1,2,3,4,5,6])
>>> for i in m:
print(i,end=" ")
1 4 9 16 25 36
>>> def func(x,y):
return x*x+y*y
>>> m2=map(func,[1,2,3,4,5,6],(4,5,6)) #多个可迭代参数对象,短的对象耗尽则迭代结束
>>> for i in m2:
print(i,end=" ")
17 29 45
42、 max(iterable, *[, key, default]),max(arg1, arg2, *args[, key]):返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。
如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最大的元素;如果提供了两个及以上的位置参数,则返回最大的位置参数。
有两个可选只能用关键字的实参。key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。
如果有多个最大元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable, key=keyfunc, reverse=True)[0] 和 heapq.nlargest(1, iterable, key=keyfunc) 保持一致。
>>> max(1,2,3,4) #2个以上位置参数
4
>>> max([2,3,4,3,4,5,]) #一个位置参数,必须是非空iterable
5
>>>