跳到内容

constant-imported-as-non-constant (N811) (常量作为非常量导入)

源自 pep8-naming linter。

作用

检查以非常量样式名称别名导入的常量。

为什么这不好?

PEP 8 推荐类、函数、常量等的命名约定。导入名称和别名名称之间使用不一致的命名风格可能会导致读者期望导入的是另一种类型(例如,将 Python 类与常量混淆)。

因此,导入别名应遵循与被导入成员相同的命名风格。

示例

from example import CONSTANT_VALUE as ConstantValue

建议改为

from example import CONSTANT_VALUE

注意

根据 PEP 8 的规则,由单个大写字符组成的标识符是模糊的,该规则为类指定 CamelCase,为常量指定 ALL_CAPS_SNAKE_CASE。如果没有第二个字符,就无法可靠地猜测该标识符是打算作为类的 CamelCase 字符串的一部分还是作为常量的 ALL_CAPS_SNAKE_CASE 字符串的一部分,因为这两种约定在给定单个输入字符时都会产生相同的输出。因此,此 lint 规则不适用于导入的标识符由单个大写字符组成的情况。

Django 的 django.db.models.Q 类中可以找到使用单个大写字符作为类名的常见示例。

Options (选项)