Python:捕获可变的默认参数

时间:2010-11-18 03:02:59

标签: python debugging ide

我了解the problem以及如何解决这个问题。我想请求帮助在现有代码中找到此问题。

换句话说,我正试图找到埋藏这个陷阱的所有位置,所以我可以解决它。

有没有可以帮助我的工具?

3 个答案:

答案 0 :(得分:10)

Pylint对可变类型的默认参数值有警告。它是可定制的,所以如果你愿意的话,你可以做到这一点。

答案 1 :(得分:3)

grep有什么问题?

grep "^\s*def.*=(\[\]|\{\}|set\(\))"

这将找到所有常见的罪魁祸首。

如果您使用自己的一个可变类的实例作为默认值,则必须单独检查它。

答案 2 :(得分:0)

@ S.Lott提出的正则表达式也在查找函数/方法调用,但是我们只想查找函数/方法定义

因此,这是正则表达式的更新版本,用于查找使用可变默认参数的所有函数/方法签名的位置:

def .+?\([^:]*?(=\[\]|=\{\}|set\(\))[^:]*?\):

注意:

如果您使用的是PyCharm,它将为这些参数添加淡黄色背景,并帮助您更改代码。

享受!