检查正在使用的Python内置变量或参数
项目描述
Flake8 Builtins插件
检查作为变量或参数使用的Python内置变量。
想象一下以下代码
def max_values(list, list2):
max = list[0]
for x in list:
if x > 0:
max = x
all_values = list()
all_values.append(max)
max = list2[0]
for x in list2:
if x > 0:
max = x
all_values.append(max)
return all_values
max_values([3, 4, 5, ], [5, 6, 7])
最后一行没有返回预期的[5, 7],而是抛出了以下异常
Traceback (most recent call last): File "test.py", line 17, in <module> max_values([3,4,5], [4,5,6]) File "bla.py", line 6, in max_values all_values = list() TypeError: 'list' object is not callable
为什么? 因为max_value函数的第一个参数是Python内置的列表。Python允许重写它们,尽管在某些非常特定的用例中可能很有用,但通常的做法是不要这样做,因为代码可能会突然中断而没有清晰的痕迹。
示例
给定以下代码
def my_method(object, list, dict):
max = 5
min = 3
zip = (4, 3)
以下警告被显示(通过flake8)
test.py:1:15: A002 argument "object" is shadowing a python builtin test.py:1:23: A002 argument "list" is shadowing a python builtin test.py:1:29: A002 argument "dict" is shadowing a python builtin test.py:2:5: A001 variable "max" is shadowing a python builtin test.py:3:5: A001 variable "min" is shadowing a python builtin test.py:4:5: A001 variable "zip" is shadowing a python builtin
安装
使用pip安装
$ python -m pip install flake8-builtins
选项
可以使用 –builtins-ignorelist 选项或配置选项来忽略自定义的内置函数列表
$ flake8 --builtins-ignorelist id,copyright *.py
要求
Python 3.8, 3.9, 3.10, 3.11, 3.12 和 pypy3
flake8
规则
- A001
一个变量遮蔽了Python内置函数。
- A002
一个参数遮蔽了Python内置函数。
- A003
一个类的属性遮蔽了Python内置函数。
- A004
一个导入语句遮蔽了Python内置函数。
- A005
一个模块遮蔽了Python内置模块(例如:logging 或 socket)
- A006
一个lambda参数遮蔽了Python内置函数。
许可协议
GPL 2.0
项目详情
下载文件
下载适合您平台的应用程序文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源分布
flake8_builtins-2.5.0.tar.gz (16.5 kB 查看哈希值)
构建分布
flake8_builtins-2.5.0-py3-none-any.whl (12.0 kB 查看哈希值)
关闭
flake8_builtins-2.5.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bdaa3dd823e4f5308c5e712d19fa5f69daa52781ea874f5ea9c3637bcf56faa6 |
|
MD5 | e00203cbf113b875435d0ad56394991c |
|
BLAKE2b-256 | 7a33fdfe44695094124e0e518fdd4fed0c7a34a5920de7063babd4b2bbdc8a7f |
关闭
flake8_builtins-2.5.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8cac7c52c6f0708c0902b46b385bc7e368a9068965083796f1431c0d2e6550cf |
|
MD5 | 5cbe05512eef58d816a52fc06c5e2369 |
|
BLAKE2b-256 | 1433e423d57dbe2a2ad664d166aeceac58b469510d6c763fada32afd47ffc9ef |