# TRHX'S BLOG

# Python PEP8 代码规范常见问题及解决方法

TRHX'BLOG

2019-04-15

Python3

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

如果想要选择性忽略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

最后更新于 2019年7月31日

###### 上一页

#### Eclipse 通过 JDBC 连接 SQL Server

###### JDBC SQL Server 2012 Elicpse

###### 下一页

#### VMware Pro 15 安装 Deepin15.9 国产操作系统

###### VMware Deepin

#### 评论

## TRHX'S BLOG

求知若饥 虚心若愚

站内导航

- 所有文章
- 文章归档
- RSS订阅
- 我的友链
- 留言板
- 关于博主

QQ交流群

访客地图

域名转让

以下闲置域名低价转让，价格非常美丽，给钱就扔，欢迎骚扰：

52bug.club
52bug.xyz
52bug.top
NeedForSpeed.site
文章分类

- BLOG
  (3)
- CDN
  (1)
- Hexo
  (5)
- Java
  (1)
- Linux
  (2)
- Markdown
  (2)
- Python3
  (11)
- WEB前端
  (2)
- 图床
  (1)

热门标签
BLOG CDN Deepin Elicpse Github Github Pages HTTPS Hexo ICP备案 JDBC JS 预加载 Markdown Material X PEP8 PicGo Pygame Python SQL Server 2012 Ubuntu VMware if语句 input()函数 instant.page jsDeliver jsDelivr spfk while循环 主题个性化 公安备案 函数 列表 变量 图床 垃圾 字典 异常 技巧 操作列表 数据类型 文件 模块 类 继承 编辑器
最近在听