二次开发Python代码中的警告(warning)与错误(Error)的缘由分析及处理建议。python
按出现的频次排序,越靠前则出现的次数越多。express
建议使用analyze_pylint.py代码来执行pylint命令及分析报告,而后参照生成的csv文件及本文档进行修改,代码:less
Warningide
W0614(unused-wildcard-import)函数
缘由分析:b.py文件中import 了sys,os等,当a.py中from b import * 时,若是sys在a中没有使用,则有此警告oop
处理意见:import时不使用*ui
W0611(unused-import)spa
缘由分析:import后未使用对象
处理意见:先解决全部的import * ,而后再处理该警告。排序
W0212(protected-access)
缘由分析:直接使用了保护变量
处理意见:保护变量不直接使用,增长获取变量的方法
W0621(redefined-outer-name)
缘由分析:和__main__中的变量重名
处理意见:须要把__main__中的内容定义为一个main函数
W0613(unused-argument)
缘由分析:变量未使用
处理意见:多是保留,后面可能会使用。暂不修改
W0702(bare-except)
缘由分析:直接使用了try..except..,没有捕获具体的异常
处理意见:明确捕获哪些异常有困难。暂不修改
W0612(unused-variable)
缘由分析:定义了变量却没有使用
处理意见:首先确认是否真的不须要,若是等号后的内容须要,则把等号前的删掉;若是是须要占位,则使用下划线
W0622(redefined-builtin)
缘由分析:变量名等与系统内置的变量重复
处理意见:避免与系统内置的名称重复
W0311(bad-indentation)
缘由分析:缩进问题
处理意见:建议缩进使用四个空格,不使用tab或三个空格等
W0511(fixme)
缘由分析:# todo 未实现
处理意见:慢慢实现
W0105(pointless-string-statement)
缘由分析:代码中间无心义的字符串
处理意见:如果注释代码,则用# 号或者删除;若是是doc_string就放在开始处
W0102(dangerous-default-value)
缘由分析:使用了可变对象做为默认参数
处理意见:不要使用可变对象做为默认参数
W0122(exec-used)
缘由分析:使用了exec
处理意见:避免使用exec
W1401(anomalous-backslash-in-string)
缘由分析:含"\“的字符可能缺乏前缀r
处理意见:若是存在“\”,则在字符串前加r
W0201(attribute-defined-outside-init)
缘由分析:显式的设置了一个初始化时不存在的属性
处理意见:不要显式的去设置一个不存在的属性,在__init__函数中设置
W0301(unnecessary-semicolon)
缘由分析:行末尾加了;
处理意见:python代码行尾不须要加;
W0312(mixed-indentation)
缘由分析:缩进使用了tab
处理意见:使用四个空格,不使用tab
W0401(wildcard-import)
缘由分析:import时使用了*
处理意见:import时不使用*
W0640(cell-var-from-loop)
缘由分析:部分变量在循环中定义
处理意见:将定义提取到循环外
W0404(reimported)
缘由分析:重复定义
处理意见:处理
W0107(unnecessary-pass)
缘由分析:无心义的pass;部分还没有定义的函数直接使用了pass
处理意见:对于未定义的函数建议使用return None,不使用pass
W0123(eval-used)
缘由分析:使用了eval
处理意见:尽可能不使用eval
W0108(unnecessary-lambda)
缘由分析:部分简单的不须要使用lambda
处理意见:简单的好比直接可以使用int()等就不要使用lambda
W0211(bad-staticmethod-argument)
缘由分析:staticmethod不须要self,cls参数;若是是类函数,则须要
处理意见:确认并修改
W0143(comparison-with-callable)
缘由分析:判断是不是同一个函数时提示是否遗漏括号
处理意见:判断是不是同一个函数,建议使用is,不使用==
W0632(unbalanced-tuple-unpacking)
缘由分析:相似于left, right = args[-2:]
处理意见:看是否可以显示的声明。。。
W0109(duplicate-key)
缘由分析:key重复
处理意见:确认并修改
W0631(undefined-loop-variable)
缘由分析:在循环外使用循环变量,可能致使变量未定义
处理意见:确认并修改
W0703(broad-except)
缘由分析:直接捕获了全部的Exception
处理意见:暂不处理
W0106(expression-not-assigned)
缘由分析:表达式的值未赋值出去
处理意见:确认并修改
W0120(useless-else-on-loop)
缘由分析:Else clause on loop without a break statement (useless-else-on-loop)
for i in L:
pass:无锡人流医院××× http://mobile.wxbhnkyy120.com/
else:
return None
处理意见:待确认
Error
E1101(no-member)
缘由分析:使用元类
处理意见:建议在类中定义一个类变量(静态变量)
E0602(undefined-variable)
缘由分析:未定义变量
处理意见:需处理
E0401(import-error)
缘由分析:对于函数内部添加路径再import的操做,静态检查会报没法导入
处理意见:考虑修改成__import__
E0102(function-redefined)
缘由分析:有多是import *引入的问题
处理意见:若确实重复则修改
E1136(unsubscriptable-object)
缘由分析:检查对象是否有__getitem__()方法
处理意见:检查对象是否有__getitem__()方法
E1120(no-value-for-parameter)
缘由分析:定义时参数与调用时传入的参数个数不一致
处理意见:处理修改代码
E0213(no-self-argument)
缘由分析:类方法第一个参数未命名为self,而命名为了cls等
处理意见:建议命名为self
E0001(syntax-error)
缘由分析:语法错误
处理意见:修改
E1137(unsupported-assignment-operation)
缘由分析:使用[]符号时须要对象支持__setitem__方法
处理意见:确认处理