- 公众号:人生只不过是一场投资
- 温馨提示:每个笔记文档都会绑定一个笔记资源;手机端可能看不到,网页端请自行下载。
11. itertools 模块
itertools
模块提供了高效的迭代器函数。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
无限迭代器 | itertools.count(start, step) | start :起始值,step :步长 |
循环迭代器 | itertools.cycle(iterable) | iterable :可迭代对象 |
重复迭代器 | itertools.repeat(object, times) | object :要重复的对象,times :重复次数 |
笛卡尔积 | itertools.product(*iterables, repeat=1) | *iterables :可迭代对象列表,repeat :重复次数 |
排列 | itertools.permutations(iterable, r) | iterable :可迭代对象,r :排列长度 |
组合 | itertools.combinations(iterable, r) | iterable :可迭代对象,r :组合长度 |
知识点 | 函数/方法 | 参数说明 |
---|
累积和 | itertools.accumulate(iterable, func) | iterable :可迭代对象,func :累积函数 |
压缩 | itertools.compress(data, selectors) | data :数据序列,selectors :选择器序列 |
过滤 | itertools.filterfalse(predicate, iterable) | predicate :过滤条件函数,iterable :可迭代对象 |
12. functools 模块
functools
模块提供了高阶函数和操作可调用对象的工具。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
部分函数应用 | functools.partial(func, *args, **keywords) | func :要部分应用的函数,*args :位置参数,**keywords :关键字参数 |
缓存函数结果 | functools.lru_cache(maxsize=128, typed=False) | maxsize :缓存的最大条目数,typed :是否区分参数类型 |
函数组合 | functools.reduce(function, iterable[, initializer]) | function :二元函数,iterable :可迭代对象,initializer :初始值(可选) |
更新包装函数 | functools.update_wrapper(wrapper, wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES) | wrapper :包装函数,wrapped :被包装函数,assigned :要分配的属性,updated :要更新的属性 |
包装函数 | functools.wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES) | wrapped :被包装函数,assigned :要分配的属性,updated :要更新的属性 |
知识点 | 函数/方法 | 参数说明 |
---|
比较函数 | functools.cmp_to_key(mycmp) | mycmp :比较函数 |
单调函数 | functools.total_ordering(cls) | cls :类 |
方法缓存 | functools.cache_property(func) | func :方法 |
13. logging 模块
logging
模块提供了灵活的日志记录功能。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
获取日志记录器 | logging.getLogger(name) | name :日志记录器名称(可选) |
设置日志级别 | logger.setLevel(level) | level :日志级别 |
添加处理器 | logger.addHandler(handler) | handler :日志处理器 |
日志记录 | logger.log(level, msg, *args, **kwargs) | level :日志级别,msg :日志消息,*args :位置参数,**kwargs :关键字参数 |
调试日志 | logger.debug(msg, *args, **kwargs) | msg :日志消息,*args :位置参数,**kwargs :关键字参数 |
信息日志 | logger.info(msg, *args, **kwargs) | msg :日志消息,*args :位置参数,**kwargs :关键字参数 |
警告日志 | logger.warning(msg, *args, **kwargs) | msg :日志消息,*args :位置参数,**kwargs :关键字参数 |
错误日志 | logger.error(msg, *args, **kwargs) | msg :日志消息,*args :位置参数,**kwargs :关键字参数 |
致命日志 | logger.critical(msg, *args, **kwargs) | msg :日志消息,*args :位置参数,**kwargs :关键字参数 |
知识点 | 函数/方法 | 参数说明 |
---|
设置格式化器 | logging.Formatter(fmt, datefmt) | fmt :日志格式,datefmt :日期格式 |
添加格式化器 | handler.setFormatter(formatter) | formatter :格式化器 |
14. subprocess 模块
subprocess
模块提供了创建和管理子进程的功能。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
运行命令 | subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None) | args :命令和参数列表,stdin :标准输入,input :输入数据,stdout :标准输出,stderr :标准错误,shell :是否通过 shell 执行,cwd :工作目录,timeout :超时时间,check :是否检查返回码,encoding :编码,errors :错误处理,text :是否以文本模式,env :环境变量,universal_newlines :是否使用通用换行符 |
创建子进程 | subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=(), *, encoding=None, errors=None, text=None) | args :命令和参数列表,bufsize :缓冲区大小,executable :可执行文件,stdin :标准输入,stdout :标准输出,stderr :标准错误,preexec_fn :子进程执行前调用的函数,close_fds :是否关闭文件描述符,shell :是否通过 shell 执行,cwd :工作目录,env :环境变量,universal_newlines :是否使用通用换行符,startupinfo :启动信息,creationflags :创建标志,restore_signals :是否恢复信号,start_new_session :是否启动新会话,pass_fds :传递的文件描述符,encoding :编码,errors :错误处理,text :是否以文本模式 |
等待子进程结束 | process.wait(timeout=None) | timeout :超时时间(可选) |
终止子进程 | process.terminate() | 无参数 |
杀死子进程 | process.kill() | 无参数 |
知识点 | 函数/方法 | 参数说明 |
---|
写入子进程输入 | process.stdin.write(data) | data :要写入的数据 |
读取子进程输出 | process.stdout.read(size=-1) | size :要读取的字节数(可选) |
读取子进程错误 | process.stderr.read(size=-1) | size :要读取的字节数(可选) |
15. socket 模块
socket
模块提供了网络通信的功能。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
创建套接字 | socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) | family :地址族,type :套接字类型,proto :协议,fileno :文件描述符 |
绑定地址 | socket.bind(address) | address :地址 |
监听连接 | socket.listen(backlog) | backlog :最大连接数 |
接受连接 | socket.accept() | 无参数 |
连接服务器 | socket.connect(address) | address :服务器地址 |
发送数据 | socket.send(bytes) | bytes :要发送的数据 |
接收数据 | socket.recv(bufsize) | bufsize :缓冲区大小 |
关闭套接字 | socket.close() | 无参数 |
知识点 | 函数/方法 | 参数说明 |
---|
获取选项 | socket.getsockopt(level, optname, buflen=None) | level :选项级别,optname :选项名称,buflen :缓冲区大小(可选) |
设置超时时间 | socket.settimeout(value) | value :超时时间(秒) |
获取超时时间 | socket.gettimeout() | 无参数 |
16. threading 模块
threading
模块提供了创建和管理线程的功能。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
创建线程 | threading.Thread(target, args=(), kwargs={}) | target :线程函数,args :位置参数元组,kwargs :关键字参数字典 |
启动线程 | thread.start() | 无参数 |
等待线程结束 | thread.join(timeout=None) | timeout :超时时间(可选) |
锁定资源 | lock.acquire(blocking=True, timeout=-1) | blocking :是否阻塞,timeout :超时时间 |
释放资源 | lock.release() | 无参数 |
知识点 | 函数/方法 | 参数说明 |
---|
创建局部数据 | threading.local() | 无参数 |
设置局部数据 | local.variable = value | variable :变量名,value :值 |
获取局部数据 | value = local.variable | variable :变量名 |
17. queue 模块
queue
模块提供了线程安全的队列实现。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
创建队列 | queue.Queue(maxsize=0) | maxsize :队列最大长度(可选) |
放入队列 | queue.put(item, block=True, timeout=None) | item :要放入的项,block :是否阻塞,timeout :超时时间 |
取出队列 | queue.get(block=True, timeout=None) | block :是否阻塞,timeout :超时时间 |
队列是否为空 | queue.empty() | 无参数 |
队列是否已满 | queue.full() | 无参数 |
知识点 | 函数/方法 | 参数说明 |
---|
优先级队列 | queue.PriorityQueue(maxsize=0) | maxsize :队列最大长度(可选) |
后进先出队列 | queue.LifoQueue(maxsize=0) | maxsize :队列最大长度(可选) |
18. multiprocessing 模块
multiprocessing
模块提供了创建和管理多进程的功能。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
创建进程 | multiprocessing.Process(target, args=(), kwargs={}) | target :进程函数,args :位置参数元组,kwargs :关键字参数字典 |
启动进程 | process.start() | 无参数 |
等待进程结束 | process.join(timeout=None) | timeout :超时时间(可选) |
终止进程 | process.terminate() | 无参数 |
获取进程 ID | process.pid | 无参数 |
获取当前进程 | multiprocessing.current_process() | 无参数 |
知识点 | 函数/方法 | 参数说明 |
---|
创建队列 | multiprocessing.Queue(maxsize=0) | maxsize :队列最大长度(可选) |
放入队列 | queue.put(item, block=True, timeout=None) | item :要放入的项,block :是否阻塞,timeout :超时时间 |
取出队列 | queue.get(block=True, timeout=None) | block :是否阻塞,timeout :超时时间 |
创建管道 | multiprocessing.Pipe(duplex=True) | duplex :是否双向通信 |
发送数据 | conn.send(obj) | obj :要发送的数据 |
接收数据 | conn.recv() | 无参数 |
知识点 | 函数/方法 | 参数说明 |
---|
创建锁 | multiprocessing.Lock() | 无参数 |
锁定资源 | lock.acquire(block=True, timeout=None) | block :是否阻塞,timeout :超时时间 |
释放资源 | lock.release() | 无参数 |
创建事件 | multiprocessing.Event() | 无参数 |
设置事件 | event.set() | 无参数 |
清除事件 | event.clear() | 无参数 |
等待事件 | event.wait(timeout=None) | timeout :超时时间(可选) |
19. asyncio 模块
asyncio
模块提供了异步 I/O、事件循环和协程的功能。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
创建协程 | async def coroutine(): | 无参数 |
运行事件循环 | asyncio.run(main()) | main :主协程函数 |
创建任务 | asyncio.create_task(coro) | coro :协程对象 |
等待协程完成 | await coro | coro :协程对象 |
并发运行协程 | await asyncio.gather(*coros) | *coros :协程对象列表 |
知识点 | 函数/方法 | 参数说明 |
---|
异步读取文件 | asyncio.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) | file :文件名,mode :打开模式,buffering :缓冲区大小,encoding :编码,errors :错误处理,newline :换行符,closefd :是否关闭文件描述符,opener :打开器 |
异步等待 | await asyncio.sleep(delay, result=None) | delay :等待时间(秒),result :返回结果(可选) |
异步超时 | await asyncio.wait_for(fut, timeout) | fut :可等待对象,timeout :超时时间 |
异步锁定资源 | async with lock: | lock :异步锁对象 |
异步锁 | asyncio.Lock() | 无参数 |
知识点 | 函数/方法 | 参数说明 |
---|
获取事件循环 | asyncio.get_event_loop() | 无参数 |
关闭事件循环 | loop.close() | 无参数 |
运行事件循环 | loop.run_forever() | 无参数 |
停止事件循环 | loop.stop() | 无参数 |
20. configparser 模块
configparser
模块提供了配置文件的读写功能。常用场景:
知识点 | 函数/方法 | 参数说明 |
---|
创建配置解析器 | configparser.ConfigParser() | 无参数 |
读取配置文件 | config.read(filenames, encoding=None) | filenames :文件名列表,encoding :编码(可选) |
获取配置值 | config.get(section, option, fallback=None) | section :配置段,option :配置项,fallback :默认值(可选) |
设置配置值 | config.set(section, option, value) | section :配置段,option :配置项,value :值 |
写入配置文件 | config.write(file, space_around_delimiters=True) | file :文件对象,space_around_delimiters :是否在分隔符周围添加空格 |
知识点 | 函数/方法 | 参数说明 |
---|
添加配置段 | config.add_section(section) | section :配置段名称 |
删除配置段 | config.remove_section(section) | section :配置段名称 |
删除配置项 | config.remove_option(section, option) | section :配置段名称,option :配置项名称 |