跳到内容

shallow-copy-environ (PLW1507)

源自 Pylint 代码检查工具。

修复总是可用的。

作用

检查 os.environ 的浅拷贝。

为什么这不好?

os.environ 不是一个 dict 对象,而是一个代理对象。因此,修改 os.environ 的浅拷贝也会修改原始对象。

更多信息请参见 BPO 15373

示例

import copy
import os

env = copy.copy(os.environ)

建议改为

import os

env = os.environ.copy()

修复安全性

此规则的修复被标记为不安全,因为将浅拷贝替换为深拷贝可能会导致意想不到的副作用。如果程序在某个时候修改了浅拷贝,将其更改为深拷贝可能会阻止这些修改影响原始数据,从而可能改变程序的行为。

参考