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

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

附錄:
全部警告信息以及對應的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 |
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python正則表達式中匹配次數(shù)與貪心問題詳解(+??*)
正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配,下面這篇文章主要給大家介紹了關于python正則表達式中匹配次數(shù)與貪心問題(+??*)的相關資料,需要的朋友可以參考下2022-10-10
Python中json格式數(shù)據(jù)的編碼與解碼方法詳解
這篇文章主要介紹了Python中json格式數(shù)據(jù)的編碼與解碼方法,詳細分析了Python針對json格式數(shù)據(jù)的編碼轉換操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-07-07

