-
DatabaseRouter类必须实现db_for_read、db_for_write、allow_relation、allow_migrate四个方法;缺一即报AttributeError;其中allow_relation和allow_migrate最易遗漏,导致跨库关联失败或迁移异常。
-
NumPy通过ndarray实现高效矩阵运算,支持元素级操作及使用@、np.dot()进行矩阵乘法,并提供np.linalg模块用于求逆、解线性方程组和特征值分析。
-
Python的with语句背后依赖的是上下文管理器协议,其核心是对象必须实现__enter__和__exit__两个特殊方法。上下文管理器协议的两个关键方法任何对象只要定义了以下两个方法,就能被with语句使用:__enter__(self):在进入with块时自动调用,通常用于资源获取(如打开文件、连接数据库),返回值会绑定到as后的变量(若无as子句,返回值被忽略)__exit__(self,exc_type,exc_value,traceback):在离开wit
-
量化交易需聚焦可预测目标(如涨跌概率、波动率),用滚动窗口验证避免过拟合,重视特征工程而非模型复杂度,并将预测结果转化为带风控的交易动作。
-
Python3.7+原生dict已保证插入顺序,OrderedDict仅在顺序敏感比较(==依赖插入顺序)和move_to_end()操作上不可替代,但内存高10%–20%、性能略低。
-
threading比multiprocessing更适合IO密集型任务,因GIL不阻塞系统调用,IO等待时线程让出CPU,其他线程可继续执行;而multiprocessing启动开销大、通信成本高,属过度设计。
-
plt.boxplot()画箱线图需注意:数据为listofarrays;vert=False实现横向布局;NaN自动跳过需手动检查;宽度反映样本量需手动计算widths;勿混用sns.boxplot();异常值阈值固定为1.5×IQR;中文标签须全局配置rcParams。
-
np.diag()一维输入生成对角矩阵,二维输入提取主对角线;误传二维数组易得错误结果;需偏移用k参数;dtype不自动继承;np.diagflat()先展平再构造,更鲁棒;大矩阵应避免显式构造以节省内存。
-
time模块基于时间戳和struct_time,datetime模块面向对象;通过时间戳可实现两者互转:time转datetime用datetime.fromtimestamp(time.mktime(struct_time)),datetime转time用dt.timestamp()或dt.timetuple()。
-
在Python中操作Parquet文件的核心工具是pyarrow。1.使用pyarrow.parquet模块的read_table和write_table函数实现Parquet文件的读写;2.利用pa.Table.from_pandas()和to_pandas()实现与Pandas的高效转换;3.处理大型文件时,可通过分块读取(iter_batches)控制内存使用;4.使用谓词下推(filters)和列裁剪(columns)提升查询效率;5.通过pyarrow.dataset模块统一管理分区数据集,并支
-
推荐使用join拼接字符串,因其性能更优、内存更省、语义更清晰;+或+=在拼接大量字符串时会产生O(n²)拷贝,而join时间复杂度接近O(n),且可读性和扩展性更好。
-
requests发起网络请求分三步:导入库、发请求、取数据;支持GET/POST、参数传递、文件上传、请求头设置、会话管理及异常处理与超时控制。
-
np.savez()保存多数组时键名须为合法Python标识符,否则读取后无法点号访问;np.load()返回NpzFile对象,需用list(data.files)获取键名;np.savez_compressed()体积更小但速度更慢;非ndarray对象会被静默转为ndarray。
-
and运算符在Python中用于连接条件,遵循短路求值规则:若左操作数为假则返回左操作数,否则返回右操作数;常用于条件判断、安全访问及与or、not组合使用。
-
async函数中不可直接调用同步CPU密集型代码,因其会阻塞事件循环导致异步失效;应使用run_in_executor配合线程池或进程池执行,注意参数传递、异常处理与资源清理。