二次開發(fā)Python代碼中的警告(warning)與錯(cuò)誤(Error)的原因分析及處理建議。
創(chuàng)新互聯(lián)公司成立與2013年,先為康縣等服務(wù)建站,康縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為康縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
按出現(xiàn)的頻次排序,越靠前則出現(xiàn)的次數(shù)越多。
建議使用analyze_pylint.py代碼來(lái)執(zhí)行pylint命令及分析報(bào)告,然后參照生成的csv文件及本文檔進(jìn)行修改,代碼:
Warning
W0614(unused-wildcard-import)
原因分析:b.py文件中import 了sys,os等,當(dāng)a.py中from b import * 時(shí),如果sys在a中沒有使用,則有此警告
處理意見:import時(shí)不使用*
W0611(unused-import)
原因分析:import后未使用
處理意見:先解決所有的import * ,然后再處理該警告。
W0212(protected-access)
原因分析:直接使用了保護(hù)變量
處理意見:保護(hù)變量不直接使用,增加獲取變量的方法
W0621(redefined-outer-name)
原因分析:和__main__中的變量重名
處理意見:需要把__main__中的內(nèi)容定義為一個(gè)main函數(shù)
W0613(unused-argument)
原因分析:變量未使用
處理意見:可能是保留,后面可能會(huì)使用。暫不修改
W0702(bare-except)
原因分析:直接使用了try..except..,沒有捕獲具體的異常
處理意見:明確捕獲哪些異常有困難。暫不修改
W0612(unused-variable)
原因分析:定義了變量卻沒有使用
處理意見:首先確認(rèn)是否真的不需要,如果等號(hào)后的內(nèi)容需要,則把等號(hào)前的刪掉;如果是需要占位,則使用下劃線
W0622(redefined-builtin)
原因分析:變量名等與系統(tǒng)內(nèi)置的變量重復(fù)
處理意見:避免與系統(tǒng)內(nèi)置的名稱重復(fù)
W0311(bad-indentation)
原因分析:縮進(jìn)問題
處理意見:建議縮進(jìn)使用四個(gè)空格,不使用tab或三個(gè)空格等
W0511(fixme)
原因分析:# todo 未實(shí)現(xiàn)
處理意見:慢慢實(shí)現(xiàn)
W0105(pointless-string-statement)
原因分析:代碼中間無(wú)意義的字符串
處理意見:若是注釋代碼,則用# 號(hào)或者刪除;如果是doc_string就放在開始處
W0102(dangerous-default-value)
原因分析:使用了可變對(duì)象作為默認(rèn)參數(shù)
處理意見:不要使用可變對(duì)象作為默認(rèn)參數(shù)
W0122(exec-used)
原因分析:使用了exec
處理意見:避免使用exec
W1401(anomalous-backslash-in-string)
原因分析:含"\“的字符可能缺少前綴r
處理意見:如果存在“\”,則在字符串前加r
W0201(attribute-defined-outside-init)
原因分析:顯式的設(shè)置了一個(gè)初始化時(shí)不存在的屬性
處理意見:不要顯式的去設(shè)置一個(gè)不存在的屬性,在__init__函數(shù)中設(shè)置
W0301(unnecessary-semicolon)
原因分析:行末尾加了;
處理意見:python代碼行尾不需要加;
W0312(mixed-indentation)
原因分析:縮進(jìn)使用了tab
處理意見:使用四個(gè)空格,不使用tab
W0401(wildcard-import)
原因分析:import時(shí)使用了*
處理意見:import時(shí)不使用*
W0640(cell-var-from-loop)
原因分析:部分變量在循環(huán)中定義
處理意見:將定義提取到循環(huán)外
W0404(reimported)
原因分析:重復(fù)定義
處理意見:處理
W0107(unnecessary-pass)
原因分析:無(wú)意義的pass;部分尚未定義的函數(shù)直接使用了pass
處理意見:對(duì)于未定義的函數(shù)建議使用return None,不使用pass
W0123(eval-used)
原因分析:使用了eval
處理意見:盡量不使用eval
W0108(unnecessary-lambda)
原因分析:部分簡(jiǎn)單的不需要使用lambda
處理意見:簡(jiǎn)單的比如直接可使用int()等就不要使用lambda
W0211(bad-staticmethod-argument)
原因分析:staticmethod不需要self,cls參數(shù);如果是類函數(shù),則需要
處理意見:確認(rèn)并修改
W0143(comparison-with-callable)
原因分析:判斷是否是同一個(gè)函數(shù)時(shí)提示是否遺漏括號(hào)
處理意見:判斷是否是同一個(gè)函數(shù),建議使用is,不使用==
W0632(unbalanced-tuple-unpacking)
原因分析:類似于left, right = args[-2:]
處理意見:看是否能夠顯示的聲明。。。
W0109(duplicate-key)
原因分析:key重復(fù)
處理意見:確認(rèn)并修改
W0631(undefined-loop-variable)
原因分析:在循環(huán)外使用循環(huán)變量,可能導(dǎo)致變量未定義
處理意見:確認(rèn)并修改
W0703(broad-except)
原因分析:直接捕獲了所有的Exception
處理意見:暫不處理
W0106(expression-not-assigned)
原因分析:表達(dá)式的值未賦值出去
處理意見:確認(rèn)并修改
W0120(useless-else-on-loop)
原因分析:Else clause on loop without a break statement (useless-else-on-loop)
for i in L:
pass:無(wú)錫人流醫(yī)院××× http://mobile.wxbhnkyy120.com/
else:
return None
處理意見:待確認(rèn)
Error
E1101(no-member)
原因分析:使用元類
處理意見:建議在類中定義一個(gè)類變量(靜態(tài)變量)
E0602(undefined-variable)
原因分析:未定義變量
處理意見:需處理
E0401(import-error)
原因分析:對(duì)于函數(shù)內(nèi)部添加路徑再import的操作,靜態(tài)檢查會(huì)報(bào)無(wú)法導(dǎo)入
處理意見:考慮修改為__import__
E0102(function-redefined)
原因分析:有可能是import *引入的問題
處理意見:若確實(shí)重復(fù)則修改
E1136(unsubscriptable-object)
原因分析:檢查對(duì)象是否有__getitem__()方法
處理意見:檢查對(duì)象是否有__getitem__()方法
E1120(no-value-for-parameter)
原因分析:定義時(shí)參數(shù)與調(diào)用時(shí)傳入的參數(shù)個(gè)數(shù)不一致
處理意見:處理修改代碼
E0213(no-self-argument)
原因分析:類方法第一個(gè)參數(shù)未命名為self,而命名為了cls等
處理意見:建議命名為self
E0001(syntax-error)
原因分析:語(yǔ)法錯(cuò)誤
處理意見:修改
E1137(unsupported-assignment-operation)
原因分析:使用[]符號(hào)時(shí)需要對(duì)象支持__setitem__方法
處理意見:確認(rèn)處理