Python 使用记录

前言

本文记录Python相关的一些用法,随机记录。

记录

pip

1
2
3
pip install -qqq xxx # 1个q: 只显示警告、错误、关键日志信息;2个q: 只显示错误、关键日志信息 ;3个q: 只关键日志信息
pip install -r requirement.txt # 从依赖文件下载安装包
pip install --upgrade xxx # 更新过期的第三方库

字符串

1
2
3
r'D:\xxx\yyy\zzz.py' # 防止 '\' 被Python转义。此处如无r,则需要使用 '/' 才能被识别为正确路径
f'{name} is doing {event}' # 使用格式化字符(f-string)方式定义字符。
'{} is doing {}'.format(name,event) # 类似于格式化字符的用法

星号用法

基础用法

1
2
a * b  # 乘法
a ** b #幂次

形式参数

单星号:接受任意多个非关键字参数,解析为元组形式,例如:

1
2
def function(*arg_tuple) 
# function(1,2,3) -> arg_tuple = (1,2,3)

双星号:接受任意多个关键字参数,解析为字典形式,例如:

1
2
def function(**arg_dict) # 
# function(a = 1, b = 2, c = 3) -> arg_dict = {'a':1, 'b':2, 'c':3}

实际参数

单星号:将元组/列表变量拆分为多个单元素传入函数,例如:

1
2
3
def function(a, b, c) 
x = [1,2,3]
function(*x)

双星号:将字典变量拆分为多个键值对传入函数,例如:

1
2
3
def function(a, b, c) 
x = {'a':1, 'b':2, 'c':3}
function(**x)

装饰器

@dataclass

自动生成 __init__() 函数。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
@dataclass
class DataObject:
x: float
y: float
z: float
w: float
time: int

def __post_init__(self):
pass
q_data = {'x':0,'y':0,'z':0,'w':0,'time':datetime.datetime(2023,10,12,0,0)}
DataObject(**q_data)

示例中,会自动生成 __init__(x,y,...),执行完__init__后会执行__post_init__作为对__init__的补充。其中类型提示是弱提示,在运行过程中,会根据实际类型自动适应。

在使用类型注解时,可能会出现,类型注解部分解析过早,但类还未创建完成,导致NameError: name 'ClassName' is not defined错误。在脚本前面加入下述语句,可以延迟类型注解。防止该问题发生。

1
from __future__ import annotations

@property

将一个方法变为属性

1
2
3
4
5
6
7
8
9
10
11
12
13
class DataObject:
x: float
y: float
z: float
w: float

@property
def time(self):
return '2023-10-17'

q_data = {'x':0,'y':0,'z':0,'w':0}
q = DataObject(**q_data)
q.time

特性用法

类型注解

类型注解是Python中指定变量类型的一种方式,类似C/C++在声明变量时指定的参数类型一样。类型注解教程可参考Python类型注解

内置方法

slots

对class中__slots__赋值定义可以限制class允许添加的属性。

内置库

pathlib

面向对象的文件系统路径管理库,用于跨平台的文件路径管理和文件操作。基础用法可参考Python路径操作模块pathlib

shutil

高阶文件操作库,用于复制、移动、删除文件和创建、解压压缩包。简单用法可参考shutil模块详解

multiprocessing

多进程操作库,用于多进程创建、通信、互斥和关闭。简单用法可参考Python多进程初探–multiprocessing 模块

外部库

einops

提供张量简便操作的库。具体用法可参考Einops Tutorials

  1. 将张量的维度置换、增加、去除总结为3个操作:rearrangerepeatreduce
  2. 将张量的维度连接和分割总结为2个操作packunpack
  3. 能够在常用框架中通过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)等。使用键值对进行查找。具体用例可参考cachetoolsPython缓存神器cachetools

beartype

以近乎实时的性能进行静态类型检查。具体用例可参考beartype