跳转到主要内容

检查正在使用的Python内置变量或参数

项目描述

https://github.com/gforcada/flake8-builtins/actions/workflows/testing.yml/badge.svg?branch=main https://coveralls.io/repos/gforcada/flake8-builtins/badge.svg?branch=main

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内置模块(例如:loggingsocket

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 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面