前言
本文记录Python相关的一些用法,随机记录。
记录
pip
1 | pip install -qqq xxx # 1个q: 只显示警告、错误、关键日志信息;2个q: 只显示错误、关键日志信息 ;3个q: 只关键日志信息 |
字符串
1 | r'D:\xxx\yyy\zzz.py' # 防止 '\' 被Python转义。此处如无r,则需要使用 '/' 才能被识别为正确路径 |
星号用法
基础用法
1 | a * b # 乘法 |
形式参数
单星号:接受任意多个非关键字参数,解析为元组形式,例如:
1 | def function(*arg_tuple) |
双星号:接受任意多个关键字参数,解析为字典形式,例如:
1 | def function(**arg_dict) # |
实际参数
单星号:将元组/列表变量拆分为多个单元素传入函数,例如:
1 | def function(a, b, c) |
双星号:将字典变量拆分为多个键值对传入函数,例如:
1 | def function(a, b, c) |
装饰器
@dataclass
自动生成 __init__() 函数。
使用示例:
1 |
|
示例中,会自动生成 __init__(x,y,...),执行完__init__后会执行__post_init__作为对__init__的补充。其中类型提示是弱提示,在运行过程中,会根据实际类型自动适应。
在使用类型注解时,可能会出现,类型注解部分解析过早,但类还未创建完成,导致NameError: name 'ClassName' is not defined错误。在脚本前面加入下述语句,可以延迟类型注解。防止该问题发生。
1 | from __future__ import annotations |
@property
将一个方法变为属性
1 | class DataObject: |
特性用法
类型注解
类型注解是Python中指定变量类型的一种方式,类似C/C++在声明变量时指定的参数类型一样。类型注解教程可参考Python类型注解。
内置方法
slots
对class中__slots__赋值定义可以限制class允许添加的属性。
内置库
pathlib
面向对象的文件系统路径管理库,用于跨平台的文件路径管理和文件操作。基础用法可参考Python路径操作模块pathlib。
shutil
高阶文件操作库,用于复制、移动、删除文件和创建、解压压缩包。简单用法可参考shutil模块详解。
multiprocessing
多进程操作库,用于多进程创建、通信、互斥和关闭。简单用法可参考Python多进程初探–multiprocessing 模块。
外部库
einops
提供张量简便操作的库。具体用法可参考Einops Tutorials。
- 将张量的维度置换、增加、去除总结为3个操作:
rearrange,repeat,reduce。 - 将张量的维度连接和分割总结为2个操作
pack和unpack。 - 能够在常用框架中通过EinMix layers引入变换层,方便搭建神经网络。
psutil
用于监控系统资源和进程对系统资源的使用率,如CPU、内存、硬盘、网络、传感器。具体用法可参考psutil Project description。
GPUtil
用于获取系统GPU资源信息,如GPU的显存使用率,可用显存,驱动版本,序列号等。具体用法可参考GPUtil获取系统状态信息
dotmap
有序、动态扩展的点访问字典。同时具备键值对查询和点查询。具体用例可参考PyPI dotmap project
cachetools
数据缓存包,支持常见的数据缓存策略,如:Least Recently Used (LRU),First-In-First-Out (FIFO)等。使用键值对进行查找。具体用例可参考cachetools或Python缓存神器cachetools。
beartype
以近乎实时的性能进行静态类型检查。具体用例可参考beartype。