Python PEP8代碼規(guī)范常見問題以及解決方案
Python PEP8代碼規(guī)范常見問題
之前一直用 Python IDLE 寫代碼,最近換成 PyCharm 寫代碼總是會(huì)出現(xiàn)波浪號(hào),這才了解到 Python 的 PEP8 代碼規(guī)范,所以將常見的 PEP8 代碼規(guī)范問題和解決方法記錄一下,學(xué)習(xí)一下,遇到了再持續(xù)更新,養(yǎng)成良好的習(xí)慣,編寫規(guī)范的代碼!
PEP 8: no newline at end of file
解決方法:
代碼末尾需要另起一行,光標(biāo)移到最后回車即可
PEP 8: indentation is not a multiple of four
解決方法:
縮進(jìn)不是4的倍數(shù),檢查縮進(jìn)
PEP 8: over-indented
解決方法:
過度縮進(jìn),檢查縮進(jìn)
PEP 8: missing whitespace after’,’
解決方法:
逗號(hào)后面少了空格,添加空格即可,類似還有分號(hào)或者冒號(hào)后面少了空格
PEP 8: multiple imports on one line
解決方法:
不要在一句 import 中引用多個(gè)庫(kù),舉例:import socket, urllib.error最好寫成:import socket import urllib.error
PEP 8: blank line at end of line
解決方法:
代碼末尾行多了空格,刪除空格即可
PEP 8: at least two spaces before inline comment
解決方法:
代碼與注釋之間至少要有兩個(gè)空格
PEP 8: block comment should start with ‘#’
解決方法:
注釋要以#加一個(gè)空格開始
PEP 8: inline comment should start with ‘#’
解決方法:
注釋要以#加一個(gè)空格開始
PEP 8: module level import not at top of file
解決方法:
import不在文件的最上面,可能之前還有其它代碼
PEP 8: expected 2 blank lines,found 0
解決方法:
需要兩條空白行,添加兩個(gè)空白行即可
PEP 8: function name should be lowercase
解決方法:
函數(shù)名改成小寫即可
PEP 8: missing whitespace around operator
解決方法:
操作符(’=’、’>’、’<'等)前后缺少空格,加上即可
PEP 8: unexpected spaces around keyword / parameter equals
解決方法:
關(guān)鍵字/參數(shù)等號(hào)周圍出現(xiàn)意外空格,去掉空格即可
PEP 8: multiple statements on one line (colon)
解決方法:
多行語句寫到一行了,比如:if x == 2: print('OK')要分成兩行寫
PEP 8: line too long (82 > 79 characters)
解決方法:
超過了每行的最大長(zhǎng)度限制79
PEP 8: Simplify chained comparison
可簡(jiǎn)化連鎖比較(例如:if a >= 0 and a <= 9: 可以簡(jiǎn)寫為:if 0 <= a <= 9:)
想要選擇性忽略PEP8代碼風(fēng)格的警告信息使用以下方法
(養(yǎng)成良好的習(xí)慣,編寫規(guī)范的代碼!不推薦忽略!)
①將鼠標(biāo)移到出現(xiàn)警告信息的地方,按 alt+Enter,選擇忽略(Ignore)這個(gè)錯(cuò)誤即可:

②依次選擇 File - Settings - Editor - Inspections,在 Python下找到 PEP8 coding style violation 選項(xiàng),在右下角的 Ignore errors 里點(diǎn)擊加號(hào)可以添加需要忽略的警告信息ID(ID信息見后面附錄)
例如想要忽略indentation contains mixed spaces and tabs這個(gè)警告,只需要添加其ID:E101 即可

附錄:
全部警告信息以及對(duì)應(yīng)的ID,官方地址:https://pep8.readthedocs.io/en/latest/intro.html#error-codes
| code | sample message |
|---|---|
| E1 | Indentation |
| E101 | indentation contains mixed spaces and tabs |
| E111 | indentation is not a multiple of four |
| E112 | expected an indented block |
| E113 | unexpected indentation |
| E114 | indentation is not a multiple of four (comment) |
| E115 | expected an indented block (comment) |
| E116 | unexpected indentation (comment) |
| E117 | over-indented |
| E121 (*^) | continuation line under-indented for hanging indent |
| E122 (^) | continuation line missing indentation or outdented |
| E123 (*) | closing bracket does not match indentation of opening bracket’s line |
| E124 (^) | closing bracket does not match visual indentation |
| E125 (^) | continuation line with same indent as next logical line |
| E126 (*^) | continuation line over-indented for hanging indent |
| E127 (^) | continuation line over-indented for visual indent |
| E128 (^) | continuation line under-indented for visual indent |
| E129 (^) | visually indented line with same indent as next logical line |
| E131 (^) | continuation line unaligned for hanging indent |
| E133 (*) | closing bracket is missing indentation |
| E2 | Whitespace |
| E201 | whitespace after ‘(‘ |
| E202 | whitespace before ‘)’ |
| E203 | whitespace before ‘:’ |
| E211 | whitespace before ‘(‘ |
| E221 | multiple spaces before operator |
| E222 | multiple spaces after operator |
| E223 | tab before operator |
| E224 | tab after operator |
| E225 | missing whitespace around operator |
| E226 (*) | missing whitespace around arithmetic operator |
| E227 | missing whitespace around bitwise or shift operator |
| E228 | missing whitespace around modulo operator |
| E231 | missing whitespace after ‘,’, ‘;’, or ‘:’ |
| E241 (*) | multiple spaces after ‘,’ |
| E242 (*) | tab after ‘,’ |
| E251 | unexpected spaces around keyword / parameter equals |
| E261 | at least two spaces before inline comment |
| E262 | inline comment should start with ‘# ‘ |
| E265 | block comment should start with ‘# ‘ |
| E266 | too many leading ‘#’ for block comment |
| E271 | multiple spaces after keyword |
| E272 | multiple spaces before keyword |
| E273 | tab after keyword |
| E274 | tab before keyword |
| E275 | missing whitespace after keyword |
| E3 | Blank line |
| E301 | expected 1 blank line, found 0 |
| E302 | expected 2 blank lines, found 0 |
| E303 | too many blank lines (3) |
| E304 | blank lines found after function decorator |
| E305 | expected 2 blank lines after end of function or class |
| E306 | expected 1 blank line before a nested definition |
| E4 | Import |
| E401 | multiple imports on one line |
| E402 | module level import not at top of file |
| E5 | Line length |
| E501 (^) | line too long (82 > 79 characters) |
| E502 | the backslash is redundant between brackets |
| E7 | Statement |
| E701 | multiple statements on one line (colon) |
| E702 | multiple statements on one line (semicolon) |
| E703 | statement ends with a semicolon |
| E704 (*) | multiple statements on one line (def) |
| E711 (^) | comparison to None should be ‘if cond is None:’ |
| E712 (^) | comparison to True should be ‘if cond is True:’ or ‘if cond:’ |
| E713 | test for membership should be ‘not in’ |
| E714 | test for object identity should be ‘is not’ |
| E721 (^) | do not compare types, use ‘isinstance()’ |
| E722 | do not use bare except, specify exception instead |
| E731 | do not assign a lambda expression, use a def |
| E741 | do not use variables named ‘l’, ‘O’, or ‘I’ |
| E742 | do not define classes named ‘l’, ‘O’, or ‘I’ |
| E743 | do not define functions named ‘l’, ‘O’, or ‘I’ |
| E9 | Runtime |
| E901 | SyntaxError or IndentationError |
| E902 | IOError |
| W1 | Indentation warning |
| W191 | indentation contains tabs |
| W2 | Whitespace warning |
| W291 | trailing whitespace |
| W292 | no newline at end of file |
| W293 | blank line contains whitespace |
| W3 | Blank line warning |
| W391 | blank line at end of file |
| W5 | Line break warning |
| W503 (*) | line break before binary operator |
| W504 (*) | line break after binary operator |
| W505 (*^) | doc line too long (82 > 79 characters) |
| W6 | Deprecation warning |
| W601 | .has_key() is deprecated, use ‘in’ |
| W602 | deprecated form of raising exception |
| W603 | ‘<>’ is deprecated, use ‘!=’ |
| W604 | backticks are deprecated, use ‘repr()’ |
| W605 | invalid escape sequence ‘x’ |
| W606 | ‘async’ and ‘await’ are reserved keywords starting with Python 3.7 |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
用pycharm開發(fā)django項(xiàng)目示例代碼
這篇文章主要介紹了用pycharm開發(fā)django項(xiàng)目示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
Python實(shí)現(xiàn)文件/文件夾復(fù)制功能
在數(shù)據(jù)處理和文件管理的日常工作中,我們經(jīng)常需要復(fù)制文件夾及其子文件夾下的特定文件,手動(dòng)操作不僅效率低下,而且容易出錯(cuò),因此,使用編程語言自動(dòng)化這一任務(wù)顯得尤為重要,所以本文給大家介紹了使用Python實(shí)現(xiàn)文件/文件夾復(fù)制功能,需要的朋友可以參考下2025-04-04
pandas DataFrame convert_dtypes的具體使用
pandas.DataFrame.convert_dtypes?是一個(gè)方法,用于將 DataFrame 中的數(shù)據(jù)類型轉(zhuǎn)換為更合適的類型,本文就來介紹一下pandas DataFrame convert_dtypes的具體使用,感興趣的可以了解一下2025-05-05
python使用Windows的wmic命令監(jiān)控文件運(yùn)行狀況,如有異常發(fā)送郵件報(bào)警
這篇文章主要介紹了python使用Windows的wmic命令監(jiān)控文件運(yùn)行狀況,如有異常發(fā)送郵件報(bào)警的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01
從原理詳解Python進(jìn)行Base64解碼的實(shí)戰(zhàn)技巧
Base64編碼解碼是處理二進(jìn)制數(shù)據(jù)的常見需求,無論是處理API響應(yīng),還是數(shù)據(jù)存儲(chǔ),今天我們從實(shí)際應(yīng)用角度出發(fā),深入探討B(tài)ase64解碼的技術(shù)細(xì)節(jié),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-08-08
Python調(diào)用OpenCV實(shí)現(xiàn)圖像平滑代碼實(shí)例
這篇文章主要介紹了Python調(diào)用OpenCV實(shí)現(xiàn)圖像平滑代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

