PyCharm 自动格式化 Python 代码

本文介绍了一个Python代码格式化工具autopep8,它能自动将代码调整为PEP8风格。文章详细讲解了autopep8的安装、基本使用方法以及如何在PyCharm中配置autopep8,实现代码的自动格式化。
部署运行你感兴趣的模型镜像

autopep8 是一个将 Python 代码自动排版为 PEP8 风格的工具,在 PyCharm 中直接格式化代码可以使用 autopep8。

一、autopep8 简介

使用 autopep8 前我们有必要先了解下 PEP 8 – Style Guide for Python Code

https://pypi.python.org/pypi/autopep8/

二、安装和使用 autopep8

autopep8 是一个开源的命令行工具,它能够将 Python 代码自动格式化为 PEP8 风格。autopep8 使用 pycodestyle 工具来决定代码中的哪部分需要被格式化,这能够修复大部分 pycodestyle 工具中报告的排版问题。autopep8 本身也是一个 Python 语言编写的工具,因此,我们可以直接使用 pip 进行安装:

pip install autopep8

我们来看一个完整的例子,本例中使用的代码如下:

import os, sys  
 
def main():  
    print [item for item in os.listdir('.') if item.endswith('.py')];  
    print sys.version  
 
if __name__ == '__main__':  
    main()

这段代码存在三个问题:

  1. 导入的时候,应该每一行只导入一个包;
  2. 包导入和函数定义之间应该空两行;
  3. Python 代码末尾不需要分号。

接下来,我们将使用 pycodestyple 检查这段代码,然后使用 autopep8 将代码格式化成符合 PEP 8 风格的代码。

使用 pycodestyle 检查代码可检测到代码中有三个地方不符合 PEP 8 规范,如下所示:

pycodestyle hello.py  
hello.py:1:10: E401 multiple imports on one line  
hello.py:3:1: E302 expected 2 blank lines, found 1  
hello.py:4:69: E703 statement ends with a semicolon

使用 autopep8 格式能够转换 Python 代码。在这个例子中,autopep8 顺利地帮我们修复了所有问题,如下所示:

$ autopep8 hello.py  
import os  
import sys  
 
 
def main():  
    print [item for item in os.listdir('.') if item.endswith('.py')]  
    print sys.version  
 
 
if __name__ == '__main__':  
    main()

这个时候如果查看源文件的话,会发现还是和原来一样,并没有修正为符合 PEP 8 规范的代码。前面说过,不指定 –in-place 选项,只会将结果输出到命令行。如果我们使用 –in-place 选项,将不会有任何输出,autopep8 会直接修改源文件。

$ autopep8 --in-place hello.py 

三、Pycharm 安装 autopep8

Pycharm 安装 autopep8

pip 安装 autopep8: pip install autopep8

PyCharm -> Preferences -> Tools -> Extends Tools -> 点击 + 加号

Name: autopep8
Tools settings:

Programs: autopep8
Parameters: --in-place --aggressive --aggressive $FilePath$
Working directory: $ProjectFileDir$
Advanced Options -> Output Filters: $FILE_PATH$\:$LINE$\:$COLUMN$\:.*

参考

  1. https://wsgzao.github.io/post/autopep8/
  2. http://lovesoo.org/add-autopep8-to-pycharm.html

我是空谷,独立产品经理、全栈设计师、全栈工程师。
技术栈为 React/Dva/Umi/Node/Egg/Electron
欢迎扫码加我微信交流,备注来源:优快云
kongguxs001

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们正在解决用户关于调整PyCharmPython代码格式化换行行为的问题。用户希望调整代码格式化时的换行设置,特别是去除多余的换行,使代码看起来更紧凑。 根据引用[1]提到,用户可能遇到了默认格式化加入多余换行的问题。引用[2]则提供了设置自动换行的方法,但这里用户关注的是格式化时的换行行为,而不是编辑时的软换行。 在PyCharm中,代码格式化(Reformat Code)遵循PEP8规范,但用户可能希望自定义换行规则。PyCharm允许通过设置调整代码样式,包括换行。 解决方案: 1. 打开PyCharm设置:File -> Settings (Windows/Linux) 或 PyCharm -> Preferences (macOS) 2. 导航到:Editor -> Code Style -> Python 3. 在“Wrapping and Braces”选项卡中,可以调整各种代码结构的换行行为。 具体可调整的选项包括: - 函数参数换行 - 方法调用参数换行 - 表达式换行 - 赋值语句换行 - 导入语句换行 等等。 例如,如果希望函数调用的参数不要自动换行,可以: - 在“Wrapping and Braces”选项卡中找到“Function call arguments” - 将“Wrap arguments”设置为“Do not wrap”或者选择其他选项(如Wrap if long) 另外,用户可能希望去除多余的换行,可以检查以下设置: - 在“Blank Lines”选项卡中,可以调整代码块之间保留的空行数量,减少不必要的空行。 注意:这些设置会影响到使用PyCharm的Reformat Code功能(快捷键Ctrl+Alt+L)时的行为。 示例: 假设我们有以下代码格式化前): ```python def example_function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9): pass ``` 默认情况下,如果一行超过指定的行宽(默认为120个字符),PyCharm自动将参数换行。如果用户希望所有参数都在一行(只要不超过行宽限制),则可以将“Function declaration parameters”和“Function call arguments”都设置为“Do not wrap”。 另外,用户还可以设置行宽(在“Hard wrap at”中设置),超过这个宽度才会换行。 步骤总结: 1. 打开设置,进入Editor -> Code Style -> Python。 2. 选择“Wrapping and Braces”选项卡,调整各种情况下的换行行为。 3. 在“Set from”下拉菜单中,可以选择预定义的样式(如PEP8),然后在此基础上调整。 4. 在“Blank Lines”选项卡中,调整空行设置。 5. 应用设置,然后使用Reformat Code功能查看效果。 注意:这些设置只影响PyCharm自带的格式化功能,如果使用外部工具(如autopep8)则需要单独配置。 如果用户之前配置了autopep8,那么需要知道autopep8有自己的配置选项,例如通过`--max-line-length`设置行宽,但autopep8不支持调整所有换行行为。如果用户需要更细粒度的控制,可能需要使用PyCharm内置的格式化设置。 引用[4]展示了一个格式化前的代码例子,其中包含一些不规范的换行和缩进,经过格式化后应该会变得规范。但用户可能希望自定义这种规范。 因此,我们推荐用户使用PyCharm内置的代码样式设置来调整换行行为。 相关问题: 1. 如何配置PyCharm代码样式以符合PEP8标准? 2. PyCharm中如何设置行宽? 3. 如何导出和导入PyCharm代码样式配置? 4. 如何配置PyCharm在保存时自动格式化代码?</think>### PyCharm Python 代码格式化换行设置指南 通过调整 PyCharm代码样式设置,您可以精确控制格式化时的换行行为。以下是详细配置步骤: #### 1. 打开代码样式设置 - **路径**:`File > Settings > Editor > Code Style > Python` - 或直接搜索:`Ctrl+Shift+A` > 输入 "Code Style Python" #### 2. 关键换行设置(Wrapping and Braces 选项卡) | **设置项** | **选项说明** | **推荐值** | |------------|--------------|------------| | **Method declaration parameters** | 方法参数换行 | `Wrap if long` | | **Function call arguments** | 函数调用参数换行 | `Wrap when exceeds line length` | | **Binary operations** | 二元运算换行 | `Chop down if long` | | **Assignment statements** | 赋值语句换行 | `Wrap if long` | | **Import statements** | 导入语句换行 | `Wrap always` | #### 3. 行宽限制设置 ```python # 设置行宽为 100 字符(默认 120) Settings > Code Style > Hard wrap at: 100 ``` #### 4. 空行控制(Blank Lines 选项卡) - 减少多余空行: - `Before function`:设置为 0 - `After function`:设置为 0 - `In class body`:设置为 1 #### 5. 特殊换行行为设置 - **禁止自动插入空行**: ```python # 取消勾选 Settings > Editor > General > Smart Keys > Insert new line after triple-quote ``` - **保持紧凑格式**: ```python # 取消勾选 Settings > Code Style > Python > Keep when reformatting > Line breaks ``` #### 6. 效果对比示例 **格式化前**: ```python def example(a,b,c):return a*b+c ``` **默认格式化后**: ```python def example(a, b, c): return a * b + c ``` **调整后的紧凑格式**: ```python def example(a, b, c): return a*b + c ``` #### 7. 保存时自动格式化 1. 安装 **File Watchers** 插件 2. 配置 autopep8: ```bash Program: autopep8 Arguments: --in-place --aggressive --max-line-length=100 $FilePath$ ``` 3. 勾选 `Trigger on save` > **提示**:使用 `Ctrl+Alt+L` 手动格式化时,PyCharm 会优先使用内置规则[^1]。如需更严格的 PEP8 合规性,建议结合 autopep8 工具[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值