python pep8代码规范常见问题
之前一直用 python idle 写代码,最近换成 pycharm 写代码总是会出现波浪号,这才了解到 python 的 pep8 代码规范,所以将常见的 pep8 代码规范问题和解决方法记录一下,学习一下,遇到了再持续更新,养成良好的习惯,编写规范的代码!
pep 8: no newline at end of file
解决方法:
代码末尾需要另起一行,光标移到最后回车即可
pep 8: indentation is not a multiple of four
解决方法:
缩进不是4的倍数,检查缩进
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
解决方法:
函数名改成小写即可
pep 8: missing whitespace around operator
解决方法:
操作符(’=’、’>’、’<'等)前后缺少空格,加上即可
pep 8: unexpected spaces around keyword / parameter equals
解决方法:
关键字/参数等号周围出现意外空格,去掉空格即可
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代码风格的警告信息使用以下方法
(养成良好的习惯,编写规范的代码!不推荐忽略!)
①将鼠标移到出现警告信息的地方,按 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 |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论