这里对 Python3 内置函数和标准库的简单介绍做了分类汇总,用于备忘。
内置函数
通用
- callable(object):判断一个对象是否可调用,如果一个实例的类实现了call()方法,则它是可以调用的。
>>> f = lambda x,y : x+y
>>> callable(f) # f是函数对象,可调用
True
>>> a = 10 # a 不可调用
>>> callable(a)
False
- classmethod(function):返回一个类方法。
- delattr(object, name):删除一个对象的属性,相当于del object.name。
- dict():字典类型的构造函数。
- dir():返回一个包含了 object 所有属性的列表对象,如果没有参数,则包含当前作用域的所用属性。
- enumerate(iterable, start=0):返回一个可迭代的 enumerate object,对其使用 next() 得到的是包含索引和元素的tuple,通常用于同时遍历索引和元素:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> for x in enumerate(seasons): # 遍历
... print(x, end=' ')
...
(0, 'Spring') (1, 'Summer') (2, 'Fall') (3, 'Winter')
# 相当于:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
- frozenset(): frozenset 的构造函数。顾名思义,frozenset是一种 set 类型,且不可改变(没有add、remove等方法)。
- getattr(object, name):获得对象的name属性,当该属性不存在的时候可以使用一个默认值作为返回值。
- globals():返回一个包含当前所有全局符号和对应值的字典。
- hasattr(object, name):判断对象是否有name属性。
- hash(object):返回对象的 hash 值,object 必须是可哈希的。注意:所有不可变的内置类型都是 hashable 的,比如 string,tuple;所有可变的内置类型都是 unhashable 的,比如 list,dict(即没有__hash__()方法)。
- help():查看一个对象的帮助文档。
- id():返回一个对象的 id 身份,可以看作该对象的内存地址。
- input():读取一行输入并返回一个字符串。
- issubclass(class,baseclass):判断一个类是否是另一个类的子类。
- iter():返回一个可迭代的对象。
- len():返回一个长度值,与 object 中的__len__()有关。
- list(): list 的构造函数。
- isinstance(object, class):判断对象 object 是不是类 class 或其派生类的实例。
- locals():返回一个包含当前局部符号和对应值的字典,与globals() 对应。
- memoryview(obj):返回一个 memory view 对象。
- next(iterator):产生下一个生成值,与__next__()有关。
- open():打开一个文件,返回对应的文件对象。
- print():打印输出。
- property(fget=None, fset=None, fdel=None, doc=None):函数 property() 的作用就是把类中的方法当作属性来访问。看下面的例子:
class C:
def __init__(self):
self.__x = None
def getx(self):
return self.__x
def setx(self, value):
self.__x = value
def delx(self):
del self.__x
x = property(getx, setx, delx, "I'm the 'x' property.")
# 为了操作数据成员 __x,我们需要使用 getx、setx、delx 方法,很麻烦。但是如果通过 property 函数将方法绑定到成员x,那么当获取成员x的值时,就会调用getx函数;当给成员x赋值时,就会调用setx函数;当删除x时,就会调用delx函数:
c = C()
print(c.x) # 相当于c.getx()
c.x = 20 # 相当于c.setx(20)
del c.x # 相当于c.delx()
# 这样通过 x 间接调用方法操作 __x 就方便多了。
- range(start, stop[, step]):返回一个序列。
- reversed():倒序序列,对象需要实现__reversed__()方法。
- set(): set 的构造函数。
- setattr(object, name, value):为一个对象(类或实例)的 name(属性或方法) 属性设置(新增或改变)一个 value(值或函数) 值。
- slice(start,stop[,step]):切片函数,分割一个可分割的对象,返回其中的一部分。
- staticmethod(function):返回一个静态的方法。要知道,一个类的静态方法没有隐式的第一个 self 参数,因为静态方法是独立于实例对象的:
class C:
@staticmethod
def f(arg1, arg2, ...): ...
- super(): super() 常用于继承中调用父类的方法。例如,类的继承中,通常需要调用父类的构造方法,以初始化父类部分,有两种方法能达到这个目的。
方法一:调用未绑定的父类构造方法
class A:
def __init__(self):
self.a = 'A_method'
class B:
def __init__(self):
self.b = 'B_method'
class C(A, B):
def __init__(self):
A.__init__(self)
B.__init__(self)
# ...其他超类
self.c = 'C_method'
方法二:使用super函数
class A:
def __init__(self):
super().__init__()
self.a = 'A_method'
class B:
def __init__(self):
super().__init__()
self.b = 'B_method'
class C(A, B):
def __init__(self):
super().__init__() # 等价于super(C,self).__init__()
self.c = 'C_method'
# 可以看出,方法一更直观,但是方法二使用 super 函数可以一次初始化所有超类(但要确保所有的超类的构造方法都使用了super函数)。
# 当继承结构很复杂时,方法二明显更适用,当然 super 不仅可以用于构造方法还可以用于其他方法。
# 使用 super 还有一个好处,就是当改变父类名时,不需要再去修改其他地方,便于代码的维护。
- tuple():元组的构造函数。
- type():返回一个对象的类型,返回值与object.__class__一样。
- vars(object):返回 object 中所有属性与对应值的字典。没有参数时作用和locals()一样。
- zip(): zip 函数接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),还可以用来创造字典。
keys = ['name','age']
values = ['xiaobai',18]
my_dict = dict(zip(keys,values))
print(my_dict)
Out:{'name': 'xiaobai', 'age': 18}
字节
- bytearray(): bytearray的构造函数。bytearray类型是一个可变的整数序列(0 <= 整数 < 256),即字节数组,例如:
>>> a = bytearray(b'after')
>>> list(a) # convert a bytearray object into a list of integers
[97, 102, 116, 101, 114]
- bytes(): 字节对象(bytes object)的构造函数。bytes是bytearray的不可变版本:
>>> a = bytes('after', 'UTF-8')
>>> list(a) # convert a bytes object into a list of integers
[97, 102, 116, 101, 114]
字符串
- ascii(object):类似于repr(),返回一个输入对象的可打印的字符串。
- bin(x):将整数 x 转化为一个二进制字符串。当 x 不是 int 对象时,x 必须实现__index__()方法来返回一个整型数值。
>>> bin(9)
'0b1001'
- chr(i):返回编码值 i 对应的字符(str类型),i 的有效值为 0 到 1114111。与ord()正好相反。
>>> chr(97)
'a'
- format(value[, spec]):格式化一个值,当参数是一个自定义对象的时候,该对象需要实现__format__()方法。
>>> format(3.1415926, '7.3g')
' 3.14'
- hex(x):将一个整数转为小写的十六进制字符串(以’0x’开头),如果不是int对象,需要定义 index()方法。
- oct(x):将一个整数转为一个八进制字符串。如果不是 int 对象,需要定义__index__()方法。
- ord(c):返回字符 c 的编码值,与chr(i)相反。
>>> ord('a')
97
- repr(object):将对象转化为可打印的字符串。
- str():字符串的构造函数。
数值
- abs(x):返回一个整数或浮点数的绝对值,如果是复数,返回它的模。
- all(iterable):当 iterable 中所有元素都为 True 时(或者 iterable 为空),返回 True 。
- any(iterable):当 iterable 中有元素为 True 时,则返回 True 。如果 iterable 为空,返回 False 。
- bool(x):将一个值转换成一个boolean类型的值,省略 x 将返回 False。
>>> bool()
False
>>> bool('fedora')
True
- complex(re, im):复数的构造函数,re 为返回复数对象的实数部分,im 为虚数部分。
- divmod(a, b):返回一个元组(a//b, a%b)。
- float(x):返回一个浮点型的对象,无参时返回0.0
- int(x, base=10):返回字符串 x 相应进制的 int 值。
- max():最大值。
- min():最小值。
- pow(x, y[, z]):pow(x, y)相当于x**y,pow(x, y, z)相当于pow(x, y) % z。
- round(number[, ndigits]):把浮点数转变成指定小数位数的数,ndigits默认为0。
>>> round(1.75368, 3)
1.754
- sum():求和。
- sorted():排序。
标准库
文本
模块名 | 介绍 |
---|
string | 包含一个通用的 Template 类,具有适用于最终用户的简化语法,它允许用户在不更改应用逻辑的情况下定制自己的应用 |
re | 字符串正则匹配 |
difflib | 提供用于比较序列的类和函数 |
数据结构
模块名 | 介绍 |
---|
enum | |
collections | 实现了特定目标的容器,以提供 Python 标准内建容器dict , list , set , 和tuple 的替代选择 |
array | |
heapq | |
bisect | |
queue | |
struct | |
weakref | 创建弱引用,对象的弱引用不能保证对象存活,用于高速缓存等 |
copy | 深度拷贝,浅拷贝 |
pprint | 模块提供了更加复杂的打印控制,其输出的内置对象和用户自定义对象能够被解释器直接读取。当 |
算法
模块名 | 介绍 |
---|
functools | 高阶函数和可调用对象上的操作,提供了一些操作/优化函数的工具 |
itertools | 提供的生成迭代器的函数,相当高效且节省内存 |
operator | 标准运算符替代函数 |
contextlib | |
日期和时间
模块名 | 介绍 |
---|
time | |
datetime | 为日期和时间处理同时提供了简单和复杂的方法 |
calendar | |
数学运算:
模块名 | 介绍 |
---|
decimal | 十进制定点和浮点运算 |
fraction | 分数计算 |
random | 提供了生成随机数的工具 |
math | 为浮点运算提供了对底层C函数库的访问 |
statistics | |
文件系统
模块名 | 介绍 |
---|
os.path | 主要用于获取文件的属性 |
pathlib | 纯路径对象提供了不实际访问文件系统的路径处理操作 |
glob | 用于从目录通配符搜索中生成文件列表 |
fnmatch | |
linecache | |
tempfile | |
shutil | |
filecmp | |
mmap | |
codecs | |
io | 提供了 Python 用于处理各种 I/O(流) 类型的主要工具 |
数据持久存储与交换
模块名 | 介绍 |
---|
pickle | 实现了用于序列化和反序列化Python对象结构的二进制协议。 |
shelve | |
dbm | |
sqlite3 | |
xml | |
csv | CSV(字符分隔值) 文件读写 |
数据压缩与归档
模块名 | 介绍 |
---|
zlib | 可以压缩解押字符串 |
gzip | |
bz2 | |
tarfile | |
zipfile | 提供了创建、读取、写入、添加及列出 ZIP 文件的工 具 |
加密
模块名 | 介绍 |
---|
hashlib | 提供了常见的摘要算法,如MD5,SHA1等等 |
hmac | |
并发编程
模块名 | 介绍 |
---|
suprocess | |
signal | |
threading | 创建并操作线程 |
multiprocessing | 创建并操作进程 |
asyncio | |
consurrent | |
网络
模块名 | 介绍 |
---|
socket | 套接字编程接口 |
http | |
email | |
应用模块构建
模块名 | 介绍 |
---|
argparse | |
getopt | |
readline | |
getpass | 便携式密码输入工具 |
cmd | |
shlex | |
configparser | |
logging | 写日志 |
fileinput | |
atexit | |
sched | |
国际化
模块名 | 介绍 |
---|
gettext | |
locale | 处理与特定地域文化相关的数据格式 |
开发工具
模块名 | 介绍 |
---|
pydoc | |
doctest | 提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试 |
unittest | |
trace | |
traceback | |
cgitb | |
pdb | |
profile | |
pstats | |
timeit | 可以用于测量代码片段执行时间 |
tabnanny | |
compileall | |
pyclbr | |
venv | |
ensurepip | |
运行时
模块名 | 介绍 |
---|
site | |
sys | 负责程序与python解释器的交互,提供了一系列的函数和变量 |
os | os模块提供了不少与操作系统相关联的函数 |
platform | |
resource | |
gc | 垃圾收集器,内存管理 |
sysconfig | |
语言工具
模块名 | 介绍 |
---|
warnings | 发出警告,或者忽略它或引发异常 |
abc | |
dis | |
inspect | |
模块和包
模块名 | 介绍 |
---|
importlib | |
pkgutil | |
zipimport | |
参考文档
https://www.cnblogs.com/songlee/p/5738110.html
https://www.runoob.com/python3/python3-stdlib.html
https://blog.csdn.net/xiemanR/article/details/83958484