此文是结合谷歌翻译进行的,多有问题,请高手翻译完指正
原文英文地址:
Pylint features - Pylint 2.15.0-dev0 documentation
具体结合英文文档进行查看,部分翻译内容不准确此文只用于参照,有些专用名词直接使用的是英文,翻译过来会造成语义歧义,建议直接翻看原文。
PE8规范参考:
PEP 8 – Style Guide for Python Code | peps.python.org
Pylint 检查器可以提供三组功能:
控制执行选项,
可以抛出消息,
可以生成报告。
以下是所有检查器及其功能的列表。
检查器的Verbatim名称是async
.
异步检查器消息
非异步上下文管理器 (E1701)
异步上下文管理器提示对应信息implementaenter and aexit__。 当异步上下文管理器与未实现异步上下文管理协议的对象一起使用时使用。使用 Python < 3.5 时无法抛出此消息。
yield-inside-async-function (E1700)
Yield inside async function当在异步函数中发现yield或yield from语句 时使用。使用 Python < 3.5 时无法抛出此消息。
检查器的Verbatim名称是basic
.
另请参阅基本检查器选项的文档
基本检查器消息
非循环 (E0103)
not proper in loop ,在循环外使用 break 或 continue 关键字时使用。
重新定义功能 (E0102)
already defined line, 在重新定义函数/类/方法时使用。
continue-in-finally (E0116)
'finally' 子句中不支持 'continue' 当在finally 子句中找到continue关键字时抛出,这是一个 SyntaxError。
抽象类实例化 (E0110)
具有抽象方法的抽象类,已实例化当以abc.ABCMeta作为元类的抽象类,具有抽象方法并已实例化时使用。
star-needs-assignment-target(E0114)
只能在分配目标中使用星号表达式,当分配目标中未使用星号表达式时抛出。
参数存在重复名称 (E0108)
*函数定义中的重复的参数名称,在函数定义中存在重复参数名称是语法错误。
初始化返回 (E0101)
init 中的显式返回 当特殊类方法 init 具有显式返回值时使用。
too-many-star-expressions(E0112)
赋值中有多个星号表达式,当赋值中存在多个星号表达式 ( *x ) 时抛出,这是一个语法错误。
nonlocal-and-global (E0115)
Name is nonlocal and global,当名称既是非本地的又是全局的时抛出。
使用前进行全局声明 (E0118)
在全局声明之前使用名称时抛出,这会导致 Python 3.6以来的错误。使用 Python < 3.6 时不会抛出此消息。
返回外部函数 (E0104)
Return outside function,当在函数或方法之外找到“return”语句时使用。
生成器中的返回参数 (E0106)
Return with argument inside generator,当在生成器函数或方法的外部发现带有参数的“return”语句时使用(例如,使用一些“yield”语句)。使用 Python >= 3.3 时无法抛出此消息。
invalid-star-assignment-target (E0113)
当星号表达式用作星号赋值目标时,星号赋值目标必须在列表或元组中。
异常反向序列 (E0111)
第一个 reversed() 参数不是序列,当 reversed() 内置函数的第一个参数不是序列时使用,(不实现 reversed, getitem 、len
nonexistent-operator (E0107)
使用不存在的运算符,当您尝试使用 C 语言风格的预递增或预递减运算符时使用 - 和 ++,这在 Python 中不存在。
yield-outside-function (E0105)
Yield outside function, 当在函数或方法之外发现“yield”语句时使用。
初始化生成器 (E0100)
*init 方法是一个生成器,当特殊类方法 init 通过其主体中的 yield 变成一个生成器时使用。
misplaced-format-function (E0119)
当 str 对象上没有调用 format 函数时,不会在 str上调用 format 函数。例如做 print("value: {}").format(123) 而不是 print("value: {}".format(123)),这可能不是用户要做的。
nonlocal-without-binding (E0117)
nonlocal name found without binding,当非局部变量在父作用域中的某处没有附加名称时抛出
丢失异常 (W0150)
*finally 块中的语句可能会忽略异常, 当在 try...finally 块的 finally 子句中发现 break 或 return 语句时使用:在 try 子句中引发的异常将被静默忽略,而不是重新引发。
元组断言 (W0199)
*断言调用了 2 项元组x,y。 如果元组不为空,则对元组的 assert 调用将始终评估为 true,如果为空,则始终评估为 false。
断言字符串文字 (W0129)
*Assert 语句将字符串文字作为其第一个参数。断言将失效,当断言语句将字符串文字作为其第一个参数时使用,这将导致断言始终通过。
self-assigning-variable (W0127)
将相同的变量分配给自身 ,当我们检测到变量分配给自身时抛出。
comparison-with-callable (W0143)
与可调用对象进行比较时省略了括号。 当 pylint 检测到与可调用对象进行了比较时,会抛出此消息,这可能表明省略了某些括号,从而导致潜在的不良行为。
nan-comparison (W0177)
nan-comparison,在将表达式与 NaN 值如 numpy.NaN 和 float('nan') 进行比较时使用。
高危默认值 (W0102)
dangerous-default-value作为参数,当在参数的默认值中检测到作为列表或字典的可变值时使用。
重复键值 (W0109)
字典中的重复键 ,在字典表达式多次绑定同一个键时使用。
重复值 (W0130)
Duplicate value in set ,当一个集合包含相同的值两次或多次时抛出此消息。
不必要的其他循环 (W0120)
没有break语句的循环上的else子句,删除else并取消缩进它里面的所有代码,循环应该只有一个else子句,如果他们可以用break语句提前退出,否则else下的语句应该在相同的范围内循环本身。
未分配表达式 (W0106)
当表达式未分配任何内容,当不是函数调用的表达式未分配给任何内容时使用。
confusing-with-statement (W0124)
在“as”后面加上另一个上下文管理器看起来像一个元组。 当with语句组件返回多个值并仅对这些值的一部分使用名称绑定with as时抛出,例如 ctx() as a, b。这可能会产生误导,因为不清楚上下文管理器是否返回元组,或者没有名称绑定的节点是否是另一个上下文管理器。
不必要的 lambda (W0108)
可能不需要 Lambda 当 lambda 表达式的主体是与 lambda 本身相同的参数列表上的函数调用时使用;除了少数情况外,这种 lambda 表达式在所有情况下都可以替换为在 lambda 主体中调用的函数。
重新声明的指定名称 (W0128)
Redeclared variable in assignment 当我们检测到在同一个赋值中重新声明了一个变量时抛出。
无意义的陈述 (W0104)
声明似乎没有效果,当声明没有(或至少似乎)没有任何效果时使用。
无意义的字符串语句 (W0105)
String statement has no effect 字符串用作语句时使用(当然没有效果)。这是 W0104 的一个特殊情况,它有自己的消息,因此如果您将这些字符串用作文档而不是注释,则可以自由禁用它。
不必要的通行 (W0107)
不必要的pass语句,当遇到可以避免的“pass”语句时使用。
无法访问 (W0101)
无法访问的代码,当“return”或“raise”语句后面存在一些永远不会被访问的代码时使用。
评估使用 (W0123)
在使用“eval”函数时使用,以阻止该函数使用。考虑使用ast.literal_eval来安全地评估包含来自不受信任来源的 Python 表达式的字符串。
执行使用 (W0122)
使用 exec 和使用 'exec' 语句时引发。将此函数用于用户输入是很危险的,而且它通常也比实际代码慢。这并不意味着您永远不应该使用它,但您应该首先考虑替代方案并限制可用的功能。
使用常量测试 (W0125)
使用具有常量值的条件语句,当条件语句(If 或三元 if)对其测试使用常量值时抛出。这可能不是用户想要做的。
缺少括号以进行调用测试 (W0126)
由于缺少括号,使用具有潜在错误函数或方法调用的条件语句,当条件语句(If 或三元 if)似乎由于缺少括号而错误调用函数时抛出。
常数比较 (R0133)
常量之间的比较:当两个文字相互比较时,结果是一个常量。直接使用常量既更容易阅读,也更高效。从 Python 2.3 开始,不需要以这种方式初始化 'True' 和 'False'。
文字比较 (R0123)
与文字的比较,在将对象与文字进行比较时使用,这通常是您不想做的,因为您可以与完全预期的不同的文字进行比较。
comparison-with-itself (R0124)
冗余比较, 在与自身进行比较时使用。
无效名称 (C0103)
不符合名称,当名称不符合与其类型(常量、变量、类...)关联的命名规则时使用。
单例比较 (C0121)
比较应该是在将表达式与 True、False 或 None 等单例值进行比较时使用。
不允许的名称 (C0104)
Disallowed name 当名称匹配 bad-names 或 bad-names-rgxs-(未经授权的名称)时使用。
空文档字符串 (C0112)
Empty docstring ,当模块、函数、类或方法有一个空的docstring时使用。
缺少类文档字符串 (C0115)
缺少类文档字符串 ,当类没有文档字符串时使用。即使是一个空类也必须有一个文档字符串。
缺少函数文档字符串 (C0116)
缺少函数或方法文档字符串,当函数或方法没有文档字符串时使用。像 init 这样的一些特殊方法不需要文档字符串。
缺少模块文档字符串 (C0114)
缺少模块文档字符串, 当模块没有文档字符串时使用。空模块不需要文档字符串。
typevar-name-incorrect-variance (C0105)
类型变量名称不反映差异, 当 TypeVar 名称不反映其类型差异时抛出。根据 PEP8,建议分别为用于声明协变或逆变行为的变量添加后缀“co”和“contra”。不变(默认)变量不需要后缀。当不变的变量确实有后缀时,也会抛出该消息。
typevar-double-variance (C0131)
当 TypeVar 中的“covariant”和“contravariant”关键字参数都设置为“True”时,TypeVar不能同时是协变和逆变的。
类型变量名称不匹配 (C0132)
TypeVar名称与分配的变量名称不匹配 ,当 TypeVar 分配给与其名称参数不匹配的变量时抛出。
单一类型检查 (C0123)
使用 isinstance() 而不是 type() 进行类型检查, 在 Python 中执行显式类型检查的惯用方法是使用 isinstance(x, Y), 而不是 type(x) == Y,type(x) 是 Y。此处存在在一些不寻常的情况下会给出不同的结果的场景。
基本检查报告
RP0101
按类型统计
检查器的Verbatim名称是classes
.
另请参阅类检查器选项的文档
类检查器消息
定义前访问成员 (E0203)
在定义行之前访问成员, 用于在实际分配实例成员之前访问它。
方法隐藏 (E0202)
在对应行中定义的属性隐藏了此方法, 当类定义的方法被祖先类的实例属性隐藏或由某些客户端代码设置时使用。
分配非插槽 (E0237)
分配给未在类槽中定义的属性 , 在分配给未在类槽中定义的属性时使用。
重复碱基 (E0241)
类存在的重复基类,在派生类中重复使用基类会引发 TypeErrors。
无效枚举扩展 (E0244)
扩展继承的 Enum 类,当类尝试扩展继承的 Enum 类时使用。这样做会在运行时引发 TypeError。
inconsistent-mro (E0240)
类的方法解析顺序不一致,当类的方法解析顺序不一致时使用。
继承非类 (E0239)
继承 ,它不是一个类, 当一个类继承自非类的东西时使用。
无效类对象 (E0243)
无效的 class 对象,在将无效对象分配给 class 属性时使用,此处只允许一个类。
无效插槽 (E0238)
无效的 slots 对象 ,当在类中发现无效的 slots 时使用。只允许使用字符串、可迭代对象或序列。
无效插槽对象 (E0236)
slots 中的无效对象,必须仅包含非空字符串, 当 slots 中出现无效(非字符串)对象时使用。
无方法参数 (E0211)
方法没有参数,当应该将绑定实例作为第一个参数的方法没有定义参数时使用。
no-self-argument (E0213)
方法应该将“self”作为第一个参数 ,当方法具有与“self”不同的属性作为第一个参数时使用。这被认为是一个错误,因为这是一个非常普遍的约定,您不应该破坏它。
unexpected-special-method-signature (E0302)
特殊方法需要参数,当使用无效数量的参数定义特殊方法时,已抛出 %d %s。如果它太少或太多,它可能根本不起作用。
class-variable-slots-conflict (E0242)
插槽中的值与类变量冲突, 当 slots 中的值与类变量、属性或方法冲突时使用。
无效布尔返回 (E0304)
bool 不返回 bool ,当 bool 方法返回非布尔值时使用。
返回无效字节 (E0308)
bytes 不返回字节,当 bytes 方法返回不是字节的内容时使用
无效格式返回 (E0311)
format 不返回 str, 当 format 方法返回不是字符串的内容时使用
invalid-getnewargs-returned (E0312)
getnewargs 不返回元组, 当 getnewargs 方法返回不是元组的内容时使用
invalid-getnewargs-ex-returned (E0313)
getnewargs_ex 不返回包含 (tuple, dict) 的元组,当 getnewargs_ex 方法返回不属于 tuple(tuple, dict) 形式的内容时使用
无效哈希返回 (E0309)
hash 不返回 int,当 hash 方法返回非整数值时使用
无效索引返回 (E0305)
index 不返回 int ,当 index 方法返回非整数值时使用
非迭代器返回 (E0301)
iter 返回非迭代器 ,当 iter 方法返回不是可迭代的东西时使用(即没有next方法)
无效长度返回 (E0303)
len 不返回非负整数 ,当 len 方法返回非负整数时使用
无效长度提示返回 (E0310)
length_hint 不返回非负整数 ,当 length_hint 方法返回非负整数时使用
invalid-repr-returned (E0306)
repr 不返回 str ,当 repr 方法返回不是字符串的内容时使用
invalid-str-returned (E0307)
str 不返回 str ,当 str 方法返回不是字符串的内容时使用
参数不同 (W0221)
存在不同参数的方法 ,当方法的参数数量与实现的接口或覆盖的方法不同时使用。具有默认值的额外参数将被忽略。
参数重命名 (W0237)
存在重命名的方法 ,当方法参数的名称与实现的接口或覆盖的方法中的名称不同时使用。
受保护的访问 (W0212)
*访问客户端类的受保护成员,当受保护成员(即名称以下划线开头的类成员)在类外部或定义它的类的后代访问时使用。
属性定义的外部初始化 (W0201)
在 init 外部定义的属性 , 在 init 方法外部定义实例属性时使用。
子类最终类 (W0240)
用 typing.final 装饰的类的子类 ,当用 typing.final 装饰的类被子类化时使用。
抽象方法 (W0223)
方法在类中是抽象的,但未被覆盖 ,当抽象方法(即 raise NotImplementedError)在具体类中未被覆盖时使用。
abstract-method (W0239)
方法覆盖类型中存在定义的用 typing.final 装饰的方法,当覆盖用 typing.final 装饰的方法被覆盖时使用。
无效覆盖方法 (W0236)
原先额方法发现它被覆盖了成其他 ,当我们检测到方法被覆盖的方式与其基类不匹配时使用,这可能会导致运行时潜在的错误。
重新定义子类中的插槽 (W0244)
在子类中重新定义插槽 ,在子类中重新定义插槽 时使用。
签名不同 (W0222)
签名与使用方法不同,当方法签名不同于实现的接口或覆盖的方法时使用。
bad-staticmethod-argument (W0211)
self作为第一个参数 的静态方法,当静态方法具有“self”或在 valid-classmethod-first-arg 选项或 valid-metaclass-classmethod-first-arg 选项中指定的值作为第一个参数时使用。
超级无括号 (W0245)
不带括号的超级调用 ,当对 super 的调用没有括号,因此不是实际调用并且不能按预期工作时使用。
未使用的私有成员 (W0238)
未使用的私有成员 ,当定义了类的私有成员但未使用时抛出。
无用的父委托 (W0246)
方法中存在无用的 parent 或 super() 委托 ,每当我们可以检测到覆盖的方法无用时使用,依赖 parent 或 super() 委托来做与 MRO 中的另一个方法相同的事情。
非父初始化调用 (W0233)
来自非直接基类 的 init 方法被调用,当 init 方法在一个不在被分析类的直接祖先中的类上调用时使用。
未调用超级初始化 (W0231)
*基类中的 init 方法未被调用, 当祖先类方法具有未被派生类调用的 init 方法时使用。
带参数的属性 (R0206)
不能为属性定义参数 ,当我们检测到一个属性也有参数时使用,这是无用的,因为属性不能用额外的参数调用。
无用对象继承 (R0205)
类继承自对象,可以安全地从 python3 中的基中删除 ,当类从对象继承时使用,在 python3 下是隐式的,因此可以安全地从基中删除。
无类方法装饰器 (R0202)
考虑使用装饰器而不是调用 classmethod ,在未使用装饰器语法定义类方法时使用。
无静态方法装饰器 (R0203)
考虑使用装饰器而不是调用 staticmethod ,在未使用装饰器语法定义静态方法时使用。
单串用于插槽 (C0205)
类 slots 应该是一个非字符串可迭代对象 ,当类 slots 是一个简单的字符串而不是一个可迭代对象时使用。
bad-classmethod-argument (C0202)
类方法应第一个参数使用 ,当类方法的第一个参数的名称与 valid-classmethod-first-arg 选项中指定的值不同时使用(默认为“cls”),建议将它们与常规参数区分开来实例方法。
bad-mcs-method-argument (C0204)
元类类方法第一个参数使用 ,当元类类方法的第一个参数的名称不同于valid-metaclass-classmethod-first-arg 选项(默认为“mcs”)中指定的值时使用,建议轻松将它们与常规实例方法区分开来。
method-check-failed (C0203)
元类方法第一个参数使用 当元类方法的第一个参数的名称不同于 valid-classmethod-first-arg 选项(默认为“cls”)中指定的值时使用,建议轻松区分它们与常规实例方法。
方法检查失败 (F0202)
*无法检查方法签名,当 Pylint 由于意外原因无法检查方法签名兼容性时使用。如果您不理解,请报告这种情况。
检查器的Verbatim名称是design
.
另请参阅设计检查器选项的文档
设计检查器消息
公共方法太少 (R0903)
公共方法太少 ,当类的公共方法太少时使用,所以一定要确保它真的值得。
too-many-ancestors (R0901)
Too many ancestors ,当类有太多父类时使用,尝试减少它以获得更简单(并且更易于使用)的类。
参数过多 (R0913)
参数过多, 当函数或方法采用过多参数时使用。
太多布尔表达式 (R0916)
*if 语句中的布尔表达式过多,当 if 语句包含太多布尔表达式时使用。
分支过多 (R0912)
Too many branch ,当一个函数或方法的分支太多,难以理解时使用。
太多实例属性 (R0902)
Too many instance attributes, 当类有太多实例属性时使用,尝试减少它以获得更简单(也更容易使用)的类。
本地人太多 (R0914)
*Too many local variables *, 当函数或方法有太多的局部变量时使用。
太多公共方法 (R0904)
太多公共方法, 当类有太多公共方法时使用,尽量减少它以获得更简单(也更容易使用)的类。
too-many-return-statements (R0911)
*Too many return statements *, 当函数或方法的 return 语句过多,难以遵循时使用。
声明过多 (R0915)
声明过多, 当函数或方法的语句过多时使用。然后,您应该将其拆分为更小的函数/方法。
检查器的Verbatim名称是exceptions
.
另请参阅异常检查器选项的文档
异常检查器消息
bad-except-order (E0701)
错误的 except 子句顺序, 当 except 子句的顺序不正确时使用(从更具体到更通用)。如果您不修复订单,则某些异常可能不会被最具体的处理程序捕获。
捕捉非异常 (E0712)
捕获不继承自 Exception 的异常, 当不继承自 Exception 的类在 except 子句中用作异常时使用。
不良异常原因 (E0705)
异常原因设置为不是异常, 使用语法“raise ... from ...”时使用,其中异常原因不是异常,也不是无。
notimplemented-raised (E0711)
NotImplemented raise - 应该引发 NotImplementedError ,在引发 NotImplemented 而不是 NotImplementedError 时使用
raising-bad-type (E0702)
在只允许类或实例时引发, 引发既不是类也不是实例的东西时使用(即会引发TypeError )。
raising-non-exception (E0710)
引发不继承自 BaseException 的新样式类 ,当引发不继承自 BaseException 的新样式类时使用。
misplaced-bare-raise (E0704)
raise 语句不在 except子句内当在 except子句 ,内不单独使用raise 时使用。这会产生错误,因为没有要重新引发的活动异常。这条规则的一个例外由 finally 子句中的一个raise 表示,只要在 try 块中引发异常,它就可以工作,但它仍然是一种不能依赖的代码气味。
duplicate-except (W0705)
捕获先前捕获的异常类型, 当 except 捕获已被先前处理程序捕获的类型时使用。
broad-except (W0703)
捕获太一般的异常, 当一个异常捕获一个太一般的异常时使用,可能会隐藏不相关的错误。
raise-missing-from(W0707)
考虑使用中显式重新引发 Python 的异常链显示当前异常的回溯,但也显示原始异常的回溯。当您在捕获另一个异常后引发新异常时,第二个异常很可能是对第一个异常的友好重新包装。在这种情况下, raise from在最终错误中的两个回溯之间提供了更好的链接。
提升格式元组 (W0715)
异常参数建议可能有意进行字符串格式化 ,在将多个参数传递给异常构造函数时使用,其中第一个参数是一个字符串文字,其中包含用于格式化的占位符
二进制操作异常 (W0711)
要捕获的异常是二进制操作的结果 ,当要捕获的异常具有“除了 A 或 B:”的形式时使用。如果打算捕获多个,重写为“除了(A,B):”
错误异常操作 (W0716)
无效的异常操作, 在针对异常执行操作时使用,但该操作对所讨论的异常无效。通常在 except 处理程序中的异常之间进行二进制操作时抛出。
bare-except (W0702)
未指定异常类型 ,当 except 子句未指定要捕获的异常类型时使用。
try-except-raise (W0706)
当异常处理程序将 raise 作为其第一个或唯一的运算符时,将立即 使用 except 处理程序。这是无用的,因为它会立即引发异常。删除 raise 运算符或整个 try-except-raise 块!
检查器的Verbatim名称是format
.
另请参阅格式检查器选项的文档
格式检查器消息
缩进不规范 (W0311)
缩进不规范, 在发现意外数量的缩进列表或空格时使用。
不必要的分号 (W0301)
不必要的分号 ,当语句以分号 (";") 结束时使用,这不是必需的(那是 python,而不是 C ;)。
缺少最终换行符 (C0304)
缺少最后一个换行符 ,当文件中的最后一行缺少换行符时使用。
行太长 (C0301)
行太长, 当行长于给定字符数时使用。
混合行结尾 (C0327)
混合行结尾 LF 和 CRLF 当文件中有混合(LF 和 CRLF)换行符时使用。
多重陈述 (C0321)
单行上有多个语句 ,当在同一行上发现多个 on 语句时使用。
行数过多 (C0302)
Too many lines in module ,当模块有太多行时使用,降低其可读性。
尾随换行符 (C0305)
尾随换行符 ,当文件中有尾随空行时使用。
尾随空格 (C0303)
尾随空格 ,当行尾和换行之间有空格时使用。
意外行尾格式 (C0328)
意外的行结束格式, 当换行符与预期不同时使用。
多余的括号 (C0325)
关键字后不必要的括号,当括号中的单个项目跟在 if、for 或其他关键字之后时使用。
检查器的Verbatim名称是imports
.
另请参阅导入检查器选项的文档
导入检查器消息
relative-beyond-top-level (E0402)
尝试超出顶级包 的相对导入,当相对导入尝试访问当前包中的太多级别时使用。
导入错误 (E0401)
无法导入 ,在 pylint 无法导入模块时使用。
不推荐使用的模块 (W4901)
不推荐使用的模块, 导入了标记为不推荐使用的模块。
import-self (W0406)
模块导入本身,在模块导入自身时使用。
首选模块 (W0407)
首选导入, 当导入的模块具有首选替换模块时使用。
reimported (W0404)
Reimport imported line, 当一个模块被多次重新导入时使用。
通配符导入 (W0401)
通配符导入检测到,从模块导入 *时 使用。
misplaced-future (W0410)
future import 不是第一个非文档字符串语句 ,Python 2.5 及更高版本要求 future import 是模块中的第一个非文档字符串语句。
循环导入 (R0401)
循环导入,当检测到两个或多个模块之间的循环导入时使用。
从进口考虑使用 (R0402)
使用 'from %s import %s' 代替 Emitted ,当一个包的子模块被导入并具有相同名称的别名时,例如,而不是use 。import concurrent.futures as futures``from concurrent import futures
错误的导入顺序 (C0411)
%s 应该放在 %s 之前在, 不遵守 PEP8 导入顺序时使用(首先是标准导入,然后是第三方库,然后是本地导入)。
错误的导入位置 (C0413)
导入模块时应该放在模块的顶部, 当代码和导入混合使用时。
无用的导入别名 (C0414)
导入别名不重命名原始包 ,当导入别名与原始包相同时使用,例如,使用 import numpy as numpy 而不是 import numpy as np。
import-outside-toplevel (C0415)
Import outside toplevel 在模块顶层以外的任何地方使用 import 语句时使用。将此导入移动到文件的顶部。
未分组进口 (C0412)
来自某个包的导入未分组 ,当导入未按包分组时使用。
multiple-imports(C0410)
一行上的多个导入 ,当检测到导入多个模块的 import 语句时使用。
进口检查报告
RP0401
外部依赖
RP0402
模块依赖图
检查器的Verbatim名称是lambda-expressions
.
Lambda 表达式检查器消息
不必要的 lambda 赋值 (C3001)
分配给变量的 Lambda 表达式,改为使用“def”关键字定义函数, 在将 lambda 表达式分配给变量而不是使用“def”关键字定义标准函数时使用。
不必要的直接 lambda 调用 (C3002)
直接调用 Lambda 表达式,改为执行内联表达式, 当直接调用 lambda 表达式而不是内联执行其内容时使用。
检查器的Verbatim名称是logging
.
另请参阅记录检查器选项的文档
记录检查器消息
日志记录格式截断 (E1201)
记录格式字符串在转换说明符中间结束 ,当记录语句格式字符串在转换说明符结束之前终止时使用。
日志记录太少的参数 (E1206)
日志格式字符串的参数不足 ,当给定日志格式字符串的参数太少时使用。
日志记录太多参数 (E1205)
日志格式字符串的参数过多 当给定日志格式字符串的参数过多时使用。
日志记录不支持的格式 (E1200)
索引处不支持的日志格式字符 (%#02x) ,当在日志语句格式字符串中使用不支持的格式字符时使用。
日志记录格式插值 (W1202)
在日志记录函数中使用某个格式在日志, 记录语句的调用形式为“logging.
logging-fstring-interpolation (W1203)
在日志记录函数中使用某个格式 ,当日志语句的调用形式为“logging.
logging-not-lazy(W1201)
在日志记录函数中使用某个格式 ,当日志记录语句的调用形式为“logging.
检查器的Verbatim名称是method_args
.
方法参数检查器消息
丢失超时 (W3101)
缺少某个方法的超时参数可能会导致您的程序无限期挂起 ,当方法需要“超时”参数以避免等待很长时间时使用。如果没有明确指定超时,则使用默认值。例如,对于“请求”,程序永远不会超时(即无限期挂起)。
检查器的Verbatim名称是metrics
.
指标检查报告
RP0701
原始指标
检查器的Verbatim名称是miscellaneous
.
另请参阅杂项检查器选项的文档
杂项检查器消息
修复 (W0511)
当检测到作为 FIXME 或 XXX 的警告注释时使用。
使用符号消息代替 (I0023)
在通过 id 启用或禁用消息时使用。
检查器的Verbatim名称是modified_iteration
.
修改迭代检查器消息
修改迭代字典 (E4702)
某个迭代 dict 在 for 循环体内被修改,而是迭代它的副本 ,当项目被添加或删除到被迭代的字典时抛出。这样做会引发 RuntimeError。
修改迭代集 (E4703)
某个迭代集在 for 循环体内被修改,而是迭代它的副本, 当项目被添加或删除到正在迭代的集合时抛出。这样做会引发 RuntimeError。
修改迭代列表 (W4701)
某个迭代列表在 for 循环体内被修改,请考虑迭代它的副本 ,当项目被添加或删除到正在迭代的列表时抛出。这样做可能会导致意外行为,这就是为什么首选使用列表副本的原因。
检查器的Verbatim名称是newstyle
.
新式检查器消息
bad-super-call (E1003)
某个错误的第一参数给 super() ,当另一个参数而不是当前类作为 super 内置的第一个参数时使用。
检查器的Verbatim名称是nonascii-checker
.
Nonascii-Checker 检查器消息
非 ASCII 文件名 (W2402)
某个名称包含非 ASCII 字符,PEP 3131 只允许非 ascii 标识符,而不是文件名, 一些编辑器不正确支持非 ASCII 文件名。尽管 Python 自 Python 3.5 起就支持 UTF-8 文件,但不建议出于互操作性考虑。进一步阅读: - PEP 489 – Multi-phase extension module initialization | peps.python.org - PEP 672 – Unicode-related Security Considerations for Python | peps.python.org - https://bugs。 python.org/issue20485
非 ASCII 名称 (C2401)
某个名称包含非 ASCII 字符,请考虑重命名它。 当名称包含至少一个非 ASCII Unicode 字符时使用。有关这可能不好的背景,请参阅 https://peps.python.org/pep-0672/#confusing-features 。如果您的编程指南定义您使用英语编程,那么 Python 名称中应该不需要非 ASCII 字符。如果没有,您可以简单地禁用此检查。
非 ascii 模块导入 (C2403)
某个名称包含非 ASCII 字符,请使用仅 ASCII 别名进行导入, 当名称包含至少一个非 ASCII Unicode 字符时使用。有关这可能不好的背景,请参阅 https://peps.python.org/pep-0672/#confusing-features 。如果您的编程指南定义您使用英语编程,那么 Python 名称中应该不需要非 ASCII 字符。如果没有,您可以简单地禁用此检查。
检查器的Verbatim名称是refactoring
.
另请参阅重构检查器选项的文档
重构检查器消息
可简化条件 (R1726)
某个布尔条件可以简化, 当布尔条件能够被简化时抛出。
condition-evals-to-constant (R1727)
某个布尔条件将始终评估为 ,当布尔条件可以简化为常数值时抛出。
简化布尔表达式 (R1709)
当使用冗余的 pre-python 2.5 三元语法时,布尔表达式可以简化为 Emitted。
consider-using-in(R1714)
考虑使用某个 %sin (%s)' 将这些比较与 'in' 合并,如果元素是可散列的,请改用集合。 要检查一个变量是否等于多个值之一,请将这些值组合成一个集合或元组,并检查变量是否包含在其中,而不是检查每个值是否相等,这更快,更简洁。
consider-merging-isinstance (R1701)
考虑将这些 isinstance 调用合并为 isinstance(%s, (%s)) 当多个连续的 isinstance 调用可以合并为一个时使用。
考虑使用最大内置 (R1731)
考虑使用某个,而不是不必要的 if 块 使用 max 内置而不是条件提高了可读性和简洁性。
考虑使用最小内置 (R1730)
考虑使用某个,而不是不必要的 if 块 使用 min 内置而不是条件可以提高可读性和简洁性。
consider-using-with(R1732)
考虑使用 'with' 进行资源分配操作 如果资源分配分配或调用可能被 'with' 块替换,则抛出。通过使用'with',即使在异常情况下也可以确保释放分配的资源。
super-with-arguments (R1725)
考虑在使用当前类和实例调用内置 super() 时,使用不带参数的 Python 3 样式 super() 。在 Python 3 上,这些参数是默认的,可以省略。
使用列表文字 (R1734)
考虑使用 [] 代替 list() 使用 ,list() 创建空列表而不是文字 [] 时抛出。文字更快,因为它避免了额外的函数调用。
考虑使用字典理解 (R1717)
当我们使用 dict() 可调用和瞬态列表检测到字典的创建时,请考虑使用 Emitted 字典理解。虽然这段代码在语法上没有任何错误,但它很难阅读,可以简化为 dict 理解。它也更快,因为您不需要创建另一个临时列表
考虑使用生成器 (R1728)
考虑使用某个生成器时, 如果您的容器可以很大,使用生成器将带来更好的性能。
考虑使用集合理解 (R1718)
考虑使用集合推导 ,虽然这段代码在语法上没有任何问题,但它很难阅读,可以简化为集合推导。它也更快,因为您不需要创建另一个临时列表
考虑使用获取 (R1715)
考虑使用 dict.get 如果键存在则从字典中获取值,如果不存在则使用默认值 ,如果键存在, 使用内置 dict.get 从字典中获取值,如果不存在则使用默认值,更简单且考虑更多惯用语,虽然有时有点慢
考虑使用连接 (R1713)
考虑使用 str.join(sequence) 连接来自可迭代的字符串 与 for 循环迭代相比,使用 str.join(sequence) 更快,使用更少的内存并提高可读性。
考虑使用系统退出 (R1722)
考虑使用 sys.exit() 而不是使用 exit() 或 quit(),考虑使用 sys.exit()。
考虑使用三元 (R1706)
考虑使用三元, 当使用已知的 pre-python 2.5 三元语法之一时使用。
考虑交换变量 (R1712)
考虑使用元组解包来交换变量 ,您不必使用临时变量来交换变量,使用“元组解包”直接交换变量使意图更加清晰。
使用字典文字 (R1735)
考虑使用 {} ,而不是 dict() 使用 dict() 创建空字典而不是文字 {} 时抛出。文字更快,因为它避免了额外的函数调用。
trailing-comma-tuple (R1707)
不允许尾随逗号元组在 Python 中,元组实际上是由逗号符号创建的,而不是由括号创建的。不幸的是,实际上可以通过放错尾随逗号来创建一个元组,这可能会导致代码中出现潜在的奇怪错误。您应该始终明确地使用括号来创建元组。
停止迭代返回 (R1708)
不要在生成器中引发 StopIteration,而是使用 return 语句 根据 PEP479,引发 StopIteration 以结束生成器的循环可能会导致难以发现错误。此 PEP 指定 raise StopIteration 必须由一个简单的 return 语句替换
不一致的返回声明 (R1710)
函数中的所有 return 语句都应该返回一个表达式,或者它们都不应该返回。 根据 PEP8,如果任何return 语句返回一个表达式,则任何没有返回值的 return 语句都应明确将其声明为 return None,并且应在函数末尾出现明确的 return 语句(如果可访问)
从本地重新定义参数 (R1704)
使用本地名称重新定义参数, 在本地名称重新定义参数时使用,这可能表明存在潜在错误。这仅在少数名称绑定操作(例如迭代)中考虑,具有语句分配和异常处理程序分配。
链式比较 (R1716)
简化操作数之间的链式比较 ,当 pylint 遇到诸如“a < b and b < c”之类的布尔运算时会抛出此消息,建议将其重构为“a < b < c”
可简化的 if 表达式 (R1719)
if 表达式可以替换 ,当 if 表达式可以替换为 'bool(test)' 或简单地 'test' 如果布尔转换是隐式的时使用。
可简化的 if 语句 (R1703)
if 语句可以替换, 当 if 语句可以替换为 'bool(test)' 时使用。
嵌套块太多 (R1702)
嵌套块过多, 当函数或方法的嵌套块过多时使用。这会降低代码的可理解性和可维护性。
no-else-break (R1723)
“break”之后存在不必要内容, 用于突出显示包含 break 语句的 if 之后的不必要的代码块。因此,它会在遇到一系列 if 之后的 else 时抛出警告,所有这些都包含一个 break 语句。
no-else-continue (R1724)
“继续”之后存在不必要内容, 用于突出显示包含 continue 语句的 if 之后的不必要的代码块。因此,它会在遇到一系列 if 之后的 else 时抛出警告,所有这些都包含 continue 语句。
no-else-raise (R1720)
“raise”之后的不必要内容, 用于突出显示包含 raise 语句的 if 之后的不必要的代码块。因此,它会在遇到一系列 if 之后的 else 时抛出警告,所有这些都包含 raise 语句。
no-else-return (R1705)
“return”之后的不必要的内容, 用于突出显示包含 return 语句的 if 之后的不必要的代码块。因此,它会在遇到一系列 if 之后的 else 时抛出警告,所有这些都包含 return 语句。
不必要的字典索引查找 (R1733)
不必要的字典索引查找,在遍历字典项(键项对)并通过索引查找访问值时使用 '%s' 而不是Emitted。可以直接访问该值。
不必要的列表索引查找 (R1736)
不必要的列表索引查找,在迭代枚举并通过索引查找访问值时,使用其他内容而不是Emitted,可以直接访问该值。
unnecessary-comprehension (R1721)
不必要地使用推导式, 考虑使用 list、dict 或 set 构造函数,而不是使用身份理解。它更快更简单。
use-a-generator (R1729)
使用生成器代替某个内容 在 'any'、'all'、'max'、'min' 或 'sum' 内的理解是不必要的。发电机就足够了,而且速度更快。
无用返回 (R1711)
函数或方法结束时无用的返回, 当在函数或方法定义的末尾找到单个“return”或“return None”语句时抛出。可以安全地删除此语句,因为 Python 将隐式返回 None
使用隐式布尔值非比较 (C1803)
可以进行简化的某个布尔因为空序列是错误的 ,当 Pylint 检测到正在使用集合文字比较来检查空序列时使用;使用隐式布尔而不是集合类;空集合被认为是错误的
unneeded-not (C0113)
不必要的改动, 当布尔表达式包含不需要的否定时使用。
考虑迭代字典(C0201)
考虑直接迭代字典而不是调用 .keys() 当字典的键通过.keys()
方法迭代或.keys()
用于成员资格检查时抛出。遍历字典本身就足够了,. 对于会员检查,速度更快。for key in dictionary``if key in dictionary
考虑使用字典项目 (C0206)
考虑在迭代字典的键并通过索引查找访问值时,使用 .items()进行迭代。键和值都可以通过使用字典的 .items() 方法进行迭代来访问。
考虑使用枚举 (C0200)
当遇到使用 range 和 len 进行迭代的代码时,考虑使用 enumerate 而不是使用 range 和 len进行迭代。这样的代码可以通过使用 enumerate 内置函数来简化。
使用隐式布尔值非长度 (C1802)
不要在没有比较的情况下使用 len(SEQUENCE)
来确定序列是否为空 ,当 Pylint 检测到正在使用 len(sequence) 时,没有在条件内进行显式比较以确定序列是否为空时使用。不是将长度强制为布尔值,而是依赖于空序列为假的事实或将长度与标量进行比较。
consider-using-f-string (C0209)
格式化可能是 f-string 的常规字符串 ,当我们检测到使用 format() 或 % 格式化的字符串可能是 f-string 时使用。首选使用 f 字符串。需要 Python 3.6 和.py-version >= 3.6
use-maxsplit-arg (C0207)
仅访问 str.split() 的第一个或最后一个元素时,使用 %s 代替Emitted。可以使用 str.split(sep, maxsplit=1)[0] 或 str.rsplit(sep, maxsplit=1)[-1] 来访问第一个和最后一个元素。
使用序列进行迭代 (C0208)
对值进行迭代时使用序列类型 在对值, 进行迭代时,序列类型(例如 、、 lists
)比 更有效。tuples``ranges``sets
检查器的Verbatim名称是similarities
.
另请参阅相似性检查器的选项文档
相似性检查器消息
重复代码 (R0801)
某个文件中的相似行,表示在多个文件中检测到一组相似行。这通常意味着应该重构代码以避免这种重复。
相似性检查报告
RP0801
复制
检查器的Verbatim名称是spelling
.
另请参阅拼写检查器选项的文档
拼写检查消息
文档字符串中的无效字符 (C0403)
文档字符串存在无效字符 ,当无法检查文档字符串中的单词时使用。
注释拼写错误 (C0401)
注释中某个单词的拼写错误: 当注释中的单词拼写不正确时使用。
文档字符串中的拼写错误 (C0402)
文档字符串中某个单词的拼写错误: 当文档字符串中的单词拼写不正确时使用。
检查器的Verbatim 名称是stdlib
.
Stdlib 检查器消息
无效环境变量值 (E1507)
不支持某个类型参数 ,环境操作函数仅支持字符串类型参数。请参阅 os — Miscellaneous operating system interfaces — Python 3.10.5 documentation。
bad-open-mode (W1501)
不是有效的打开模式, Python 支持:r、w、a[、x] 模式,带有 b、+ 和 U(仅适用于 r)选项。见Built-in Functions — Python 3.10.5 documentation
invalid-envvar-default (W1508)
默认类型str或空, 环境操作函数返回 None 或 str 值。提供任何不同的默认值可能会导致错误。请参阅 os — Miscellaneous operating system interfaces — Python 3.10.5 documentation。
method-cache-max-size-none (W1518)
'lru_cache(maxsize=None)' 或 'cache' 将使所有方法 args 无限期地保持活动状态,包括 'self' 通过使用 lru_cache 或 cache 装饰方法,'self' 参数将链接到函数,因此永远不会被垃圾收集。除非您的实例永远不需要被垃圾收集(单例),否则建议重构代码以避免这种模式或将 maxsize 添加到缓存中。maxsize 的默认值为 128。
forgotten-debug-statement (W1515)
不建议在生产代码中留下创建断点的函数 ,调用 breakpoint()、sys.breakpointhook() 和 pdb.set_trace() 应从未主动调试的代码中删除。
冗余单元测试断言 (W1503)
具有常量值的冗余使用 assertTrue 和 assertFalse 的第一个参数是一个条件。如果将常量作为参数传递,则该条件将始终为真。在这种情况下,应该抛出警告。
shallow-copy-environ (W1507)
使用 copy.copy(os.environ)使用 os.environ.copy() 代替, os.environ 不是 dict 对象而是代理对象,所以浅拷贝仍然对原始对象有影响。请参阅Issue 15373: copy.copy() does not properly copy os.environment - Python tracker以供参考。
布尔日期时间 (W1502)
在布尔上下文中使用 datetime.time, 当它们表示的时间与午夜 UTC 匹配时,在布尔上下文中使用 datetime.time 可以隐藏细微的错误。此行为已在 Python 3.5 中修复。请参阅Issue 13936: RFE: change bool(datetime.time(0, 0, 0)) to evaluate as True - Python tracker以供参考。使用 Python >= 3.5 时无法抛出此消息。
不推荐使用的参数 (W4903)
使用某个方法的已弃用参数 该参数被标记为已弃用,并将在将来删除。
deprecated-class (W4904)
使用某个模块的已弃用类 , 该类被标记为已弃用,将来将被删除。
不推荐使用的装饰器 (W4905)
使用已弃用的装饰器 %s() 装饰器被标记为已弃用,将来将被删除。
不推荐使用的方法 (W4902)
使用已弃用的方法, 该方法被标记为已弃用,将来将被删除。
未指定编码 (W1514)
在不明确指定编码的情况下使用 open 打开文档时最好指定编码,隐式使用系统默认值可能会在其他操作系统上产生问题。见 PEP 597 – Add optional EncodingWarning | peps.python.org
subprocess-popen-preexec-fn (W1509)
使用 preexec_fn 关键字在存在线程时,可能不安全 preexec_fn 参数在应用程序中存在线程时使用是不安全的。在调用 exec 之前,子进程可能会死锁。如果您必须使用它,请保持微不足道!尽量减少调用的库数量。见subprocess — Subprocess management — Python 3.10.5 documentation
子进程运行检查 (W1510)
不建议使用未明确设置“检查”的 subprocess.run, 检查参数应始终与显式设置的检查关键字一起使用,以明确错误处理行为是什么。请参阅 subprocess — Subprocess management — Python 3.10.5 documentation
bad-thread-instantiation (W1506)
threading.Thread 需要目标函数 当在没有传递目标函数的情况下实例化 threading.Thread 类时会抛出警告。默认情况下,第一个参数是组参数,而不是目标参数。
检查器的Verbatim名称是string
.
另请参阅字符串检查器的选项文档
字符串检查器消息
错误字符串格式类型 (E1307)
*某个参数与格式类型不匹配 *, 当格式字符串所需的类型不适合实际参数类型时使用
格式需求映射 (E1303)
某个格式字符串的预期映射 ,当使用命名转换说明符的格式字符串与不是映射的参数一起使用时使用。
截断格式字符串 (E1301)
格式字符串在转换说明符中间结束 ,当格式字符串在转换说明符结束之前终止时使用。
缺少格式字符串键 (E1304)
格式字符串字典中缺少键, 当使用命名转换说明符的格式字符串与不包含格式字符串,所需的所有键的字典一起使用时使用。
混合格式字符串 (E1302)
在格式字符串中混合命名和未命名转换说明符, 当格式字符串同时包含命名(例如 '%(foo)d')和未命名(例如 '%d')转换说明符时使用。当命名转换说明符包含 * 表示最小字段宽度和/或精度时,也会使用此方法。
格式参数太少 (E1306)
格式字符串的参数不足 当为使用未命名转换说明符的格式字符串提供的参数太少时使用
bad-str-strip-call (E1310)
某个调用存在的可疑参数 str.{l,r,}strip ,调用的参数包含重复字符,
太多格式参数 (E1305)
格式字符串的参数过多 ,当为使用未命名转换说明符的格式字符串提供过多参数时使用。
错误格式字符 (E1300)
某个索引处不支持的格式字符 (%#02x), 格式字符串中使用不支持的格式字符时使用。
anomalous-unicode-escape-in-string (W1402)
字节字符串中的异常 Unicode 转义,字符串常量可能缺少 r 或 u 前缀, 当在一个字节字符串中遇到像 u 这样的转义时使用它没有效果。
字符串中的异常反斜杠 (W1401)
字符串中的反斜杠异常,字符串常量可能缺少 r 前缀, 当反斜杠在文字字符串中但不用作转义时使用。
重复字符串格式参数 (W1308)
重复字符串格式化参数 ,考虑作为命名参数传递, 当我们检测到字符串格式化重复参数而不是使用命名字符串参数时使用
格式组合规范 (W1305)
格式字符串包含自动字段编号和手动字段规范 ,当 PEP 3101 格式字符串同时包含自动字段编号(例如“{}”)和手动字段规范(例如“{0}”)时使用。
错误格式字符串键 (W1300)
格式字符串字典键应该是字符串,而不是 %s 当使用命名转换说明符的格式字符串与键不是所有字符串的字典一起使用时使用。
隐式字符串连接 (W1404)
在某个模块中找到的隐式字符串连接 ,字符串文字在文字可迭代定义中被隐式连接:可能缺少逗号?
错误格式字符串 (W1302)
Invalid format string 当在 PEP 3101 格式字符串无效时使用。
缺少格式属性 (W1306)
格式说明符中缺少格式属性, 当 PEP 3101 格式字符串使用属性说明符 ({0.length}),但为格式化传递的参数没有该属性时使用。
缺少格式参数键 (W1303)
格式字符串缺少关键字参数, 当使用命名字段的 PEP 3101 格式字符串未收到一个或多个必需关键字时使用。
不一致的引号 (W1405)
引号分隔符与文件的其余部分不一致 ,引号分隔符在整个模块中的使用不一致(考虑到避免不必要的转义)。
冗余 u 字符串前缀 (W1406)
字符串的 u 前缀在 Python >=3.0 中不再需要, 当我们检测到带有 au 前缀的字符串时使用。这些前缀在 Python 2 中是必需的,以指示字符串是 Unicode,但由于 Python 3.0 字符串默认情况下是 Unicode。
未使用的格式字符串参数 (W1304)
未使用的格式参数, 当使用命名字段的 PEP 3101 格式字符串与格式字符串不需要的参数一起使用时使用。
未使用的格式字符串键 (W1301)
格式字符串字典中未使用的键, 当使用命名转换说明符的格式字符串与包含格式字符串不需要的键的字典一起使用时使用。
无插值的 f 字符串 (W1309)
使用没有任何插值变量的 f 字符串,当我们检测到不使用任何插值变量的 f 字符串时使用,在这种情况下,它可以是普通字符串,也可以是代码中的错误。
无插值的格式字符串 (W1310)
对没有任何插值变量的字符串使用格式化,当我们检测到一个没有任何插值变量的字符串时使用,在这种情况下,它可以是没有格式化的普通字符串,也可以是代码中的错误。
无效格式索引 (W1307)
在格式说明符中使用无效的查找键, 当 PEP 3101 格式字符串使用查找说明符 ({a[1]}) 时使用,但为格式化传递的参数不包含或没有该键作为属性。
检查器的Verbatim 名称是threading
.
线程检查器消息
无用锁 (W2101)
'with' 中直接创建的 ,使用 with 语句创建新的锁实例时使用,该语句无效。相反应该使用现有实例来获取锁。
检查器的Verbatim名称是typecheck
.
另请参阅类型检查检查器的选项文档
类型检查检查器消息
不支持的赋值操作 (E1137)
不支持项分配 ,当对象不支持项分配时抛出(即未定义 setitem 方法)。
不支持的删除操作 (E1138)
不支持删除项目 ,当对象不支持删除项目时抛出(即未定义 delitem 方法)。
无效的一元操作数类型 (E1130)
当在不支持此类操作的对象上使用一元操作数时抛出。
不支持的二进制操作 (E1131)
当不支持两个操作数之间的二进制算术运算时抛出。
no-member (E1101)
不存在成员 ,在为不存在的成员访问变量时使用。
不可调用 (E1102)
不可调用 ,当正在调用的对象已被推断为不可调用对象时使用。
unhashable-member (E1143)
是不可散列的, 当 dict 键或集合成员不可分开时(即未定义 hash 方法)。
await-outside-async(E1142)
'await' 应该在异步函数中使用 ,当在异步函数外部使用 await 时抛出。
冗余关键字参数 (E1124)
在某个调用中按位置和关键字传递的参数 ,当函数调用导致为函数参数分配多个值时使用,一个值来自位置参数,一个值来自关键字参数。
assignment-from-no-return (E1111)
函数调用的赋值结果,其中函数没有返回 ,当函数调用完成赋值但推断的函数不返回任何内容时使用。
assignment-from-none(E1128)
函数调用的赋值结果,其中函数返回 None 在函数调用上完成赋值但推断的函数只返回 None 时使用。
not-context-manager (E1129)
某个上下文管理器未实现 enter 和 exit。 当 with 语句中的实例未实现上下文管理器协议 (enter/exit) 时使用。
重复关键字 (E1132)
在函数调用中获得关键字参数的多个值, 当函数调用获得关键字的多个值时抛出。
无效元类 (E1139)
Invalid metaclass used ,每当我们可以检测到一个类正在使用作为元类的东西时,使用了可能对用作元类无效的东西。
missing-kwoa (E1125)
在某个调用中缺少强制关键字参数 ,当函数调用未传递强制关键字参数时使用。
无参数值 (E1120)
某个调用中的参数没有值 ,当函数调用传递的参数太少时使用。
不可迭代 (E1133)
某个不可迭代值,用于迭代上下文中 ,当在预期可迭代的地方使用不可迭代值时使用
非映射 (E1134)
某个非映射值,用于映射上下文中, 当在需要映射的地方使用非映射值时使用
无效序列索引 (E1126)
序列索引不是带有 index 的 int、切片或实例, 当使用无效类型索引序列类型时使用。有效类型是具有 index 方法的整数、切片和对象。
无效切片索引 (E1127)
切片索引不是 int、None 或具有 index 的实例 当切片索引不是整数、None 或具有 index 方法的对象时使用。
过多的函数参数 (E1121)
某个调用的位置参数太多 ,当函数调用传递太多位置参数时使用。
意外关键字参数 (E1123)
某个调用中的意外关键字参数, 当函数调用传递的关键字参数与函数的参数名称之一不对应时使用。
dict-iter-missing-items (E1141)
在迭代中解析字典而不调用 .items() 在尝试迭代字典而不调用 .items() 时抛出
不受支持的成员资格测试 (E1135)
不支持成员资格测试 ,当成员资格测试表达式中的实例未实现成员资格协议 (contains/iter/getitem) 时抛出。
不可订阅对象 (E1136)
某个不可订阅的值 ,当下标值不支持订阅时抛出(即没有为类定义 getitem 方法或 class_getitem)。
可变参数之前的关键字参数 (W1113)
某个函数定义中可变位置参数列表之前的关键字参数 ,在可变位置参数之前定义关键字参数时,如果使用关键字参数调用该方法,最终可能会为上述参数传递多个值。
non-str-assignment-to-dunder-name (W1115)
分配给 name 的非字符串值 ,在将非字符串值分配给 name 时抛出
参数乱序 (W1114)
当调用者的参数名称与函数签名中的参数名称完全匹配但顺序不同时,位置参数似乎是乱序的。
isinstance-second-argument-not-valid-type (W1116)
isinstance 的第二个参数不是类型 ,当 isinstance 调用的第二个参数不是类型时抛出。
c-extension-no-member (I1101)
某个没有成员的,且来源不可用。如果您想基于活体的运行时自省执行分析,请考虑将此模块添加到 extension-pkg-allow-list, 当为不存在的 C 扩展成员访问变量时使用。由于源静态分析的不可用性是不可能的,但它可以通过在运行时内省活对象来执行。
检查器的Verbatim名称是unicode_checker
.
Unicode 检查器检查器消息
双向 unicode (E2502)
包含可以允许以不同于显示的双向 unicode 的方式,执行的混淆代码的控制字符通常不是正确显示从右到左 (RTL) 脚本(即中文、日语、阿拉伯语、希伯来语……)所需的显示字符。那么你能相信这段代码吗?您确定它在所有编辑器中都正确显示吗?如果您没有编写它或者您的语言不是 RTL,请删除特殊字符,因为它们可能被用来欺骗您执行代码,这与看起来的不同。更多信息:https ://en.wikipedia.org/wiki/Bidirectional_text Trojan Source Attacks
无效字符退格 (E2510)
无效的未转义字符退格,请改用“b”。 将光标向后移动,因此它后面的字符将覆盖前面的字符。
无效字符回车 (E2511)
无效的未转义字符回车,请改用“r”。 将光标移动到行首,后续字符覆盖行首。
无效字符 esc (E2513)
无效的未转义字符 esc,请改用“x1B”。 通常启动允许任意控制终端的转义码。
无效字符空 (E2514)
无效的未转义字符 nul,请改用“0”。 主要是python输入的结尾。
无效字符子 (E2512)
无效的未转义字符子,请改用“x1A”。 Ctrl+Z Windows 上的“文本结束”。一些程序(例如 type)会忽略它之后的文件的其余部分。
无效字符零宽度空间 (E2515)
无效的未转义字符零宽度空格,请改用“u200B”。 不可见的空格字符可以隐藏真实的代码执行。
无效的 unicode 编解码器 (E2501)
UTF-16 和 UTF-32 不向后兼容。改用 UTF-8 为了兼容性,请使用 UTF-8 而不是 UTF-16/UTF-32。有关此问题的历史记录,另请参阅 Issue 1503789: Cannot write source code in UTF16 - Python tracker。并且 unicode - Should UTF-16 be considered harmful? - Software Engineering Stack Exchange - utf-16-be-considered-harmful 例如在使用 UTF-16 时可能出现的一些问题。
错误文件编码 (C2503)
PEP8 建议将 UTF-8 作为 Python 文件的编码 PEP8 ,建议对 Python 文件使用 UTF-8 默认编码。见 PEP 8 – Style Guide for Python Code | peps.python.org
检查器的Verbatim名称是unnecessary-dunder-call
.
不必要的 Dunder-Call 检查器消息
unnecessary-dunder-call (C2801)
不必要地调用了 dunder 方法, 当手动调用 dunder 方法而不是使用相应的函数/方法/运算符时使用。
检查器的Verbatim名称是unnecessary_ellipsis
.
不必要的省略号检查器消息
不必要的省略号 (W2301)
不必要的省略号常数 ,在遇到并且可以避免的省略号常数时使用。如果前一行有文档字符串或同一范围内有语句,则不需要包含省略号的代码行。
检查器的Verbatim名称是unsupported_version
.
不支持的版本检查器消息
using-f-string-in-unsupported-version (W2601)
py-version 设置中包含的所有版本都不支持 F-strings ,当用户设置的 py-version 低于 3.6 并且 pylint 遇到 f-string 时使用。
using-final-decorator-in-unsupported-version (W2602)
py-version设置中包含的所有版本都不支持typing.final ,当用户设置的py-version低于3.8且pylint遇到typing.final
装饰器时使用。
检查器的Verbatim名称是variables
.
另请参阅变量检查器选项的文档
变量检查器消息
unpacking-non-sequence (E0633)
试图解压非序列包 ,在解压分配中使用非序列的东西时使用
invalid-all-format (E0605)
all 的格式无效,必须是元组或列表 当 all 的格式无效时使用。
潜在索引错误 (E0643)
Invalid index for iterable length ,当在可迭代对象上使用的索引超出该可迭代对象的长度时抛出。
无效的所有对象 (E0604)
all 中存在的无效对象,必须仅包含字符串, 当 all 中出现无效(非字符串)对象时使用。
模块中没有名称 (E0611)
No name in module,在某个模块中找不到某个名称, 时使用。
未定义变量 (E0602)
未定义变量, 在访问未定义变量时使用。
未定义的所有变量 (E0603)
all 中未定义的变量名,在 all 中引用未定义的变量名时使用。
分配前使用 (E0601)
在赋值之前使用变量,当局部变量在赋值之前被访问时抛出。在评估关联的 except/finally 块时,假定未发生 try 块中的分配。除非相关的 try 块包含 return 语句,否则在评估块外的语句时,假定 except 块中的赋值没有发生。
来自循环的单元格变量 (W0640)
循环中定义的某个单元变量, 闭包中使用的变量在循环中定义。这将导致所有闭包对封闭变量使用相同的值。
全局变量未定义 (W0601)
某个全局变量在模块级别未定义, 当通过“全局”语句定义变量但未在模块范围内定义变量时使用。
self-cls-assignment (W0642)
在方法中存在某个分配无效 , 在实例或类方法中分别对 self 或 cls 的分配无效。
unbalanced-tuple-unpacking (W0632)
可能使用某个序列进行不平衡元组打开包:左侧有某个标签,右侧有某个值 ,在分配中存在不平衡元组拆包时使用
possibly-unused-variable (W0641)
存在可能未使用的变量 ,定义了变量但可能未使用时使用。这种可能性来自可能使用 locals() 的事实,这可能会消耗或不消耗所述变量
redefined-builtin (W0622)
重新定义内置, 当变量或函数覆盖内置时使用。
重新定义的外部名称 (W0621)
从外部范围重新定义名称, 当变量的名称隐藏在外部范围或除处理程序之外定义的名称时使用。
unused-import (W0611)
Unused 模块导入, 使用导入的模块或变量时使用。
未使用的参数 (W0613)
未使用的参数, 在不使用函数或方法参数时使用。
未使用通配符导入 (W0614)
Unused import(s) %s from wildcard import of %s 当导入的模块或变量未从“from X import *”样式导入中使用时使用。
未使用的变量 (W0612)
未使用的变量, 在定义了变量但未使用时使用。
全局变量未分配 (W0602)
对使用全局但未完成赋值 ,当通过“全局”语句定义变量但未完成对该变量的赋值时使用。
未定义循环变量 (W0631)
使用可能未定义的循环变量, 在循环外使用循环变量(即由 for 循环或列表推导或生成器表达式定义)时使用。
全局声明 (W0603)
使用全局声明,使用“全局”语句更新全局变量时使用,Pylint 只是试图阻止这种用法,这并不意味着你不能使用它。
全局模块级别 (W0604)
在模块级别使用全局语句 ,在模块级别使用“全局”语句时使用,因为它没有效果。