VS Code 中的 Python 代码格式化插件

在 VS Code 中,有几款非常出色的 Python 代码格式化插件可以帮助你保持代码的整洁与规范。下面这个表格整理了目前主流的几款工具,你可以根据它们的特点进行选择。

工具名称核心特点风格理念推荐适用场景
Black开箱即用,几乎无需配置;强制统一的代码风格,可预测性强。“无妥协”的格式化器。它决定格式,讨论空间小,保证所有代码风格一致。团队协作项目;希望零配置快速上手的开发者;追求极简和一致性。
autopep8基于 PEP 8 规范,主要修复代码风格问题(如缩进、空格)。相对保守,专注于修复而非重新排版。希望代码严格遵循 PEP 8;对现有代码进行温和的格式化修复。
yapf高度可定制,可以模仿多种代码风格;格式化策略更“激进”,会重新排版代码。“自成风格”。目标是通过调整代码来达到最佳可读性,而非严格遵循某一规范。需要高度自定义格式化规则;项目有特殊的代码风格要求。

🔧 如何安装与配置

选好工具后,只需简单几步就能在 VS Code 中启用它们。这里以 Black 为例(因其使用最广且配置简单),其他工具的配置流程类似。

  1. 安装 VS Code 插件:在 VS Code 的扩展商店中搜索并安装 “Black Formatter” 插件。官方 Python 扩展(ms-python.python)也内置了对这些格式化器的支持。
  2. 进行关键配置:打开 VS Code 的设置 ( Ctrl+, ),搜索 “format on save”,并勾选 Editor: Format On Save 选项。这样每次保存文件时都会自动格式化。
  3. 设置默认格式化器:在设置中搜索 “default formatter”,为 Python 语言设置默认格式化器。在下拉列表中选择 ms-python.black-formatter

安装格式化工具:首先,确保你已经在你的 Python 环境中通过 pip 安装了该工具。

pip install black 

完成以上配置后,当你编辑或保存一个 Python 文件时,VS Code 就会自动使用 Black 来格式化你的代码了。

💡 使用建议与技巧

  • 手动格式化:除了自动保存时格式化,你还可以随时使用快捷键 Shift + Alt + F(Windows)或 Shift + Option + F(Mac)来手动格式化当前文档。

自定义行宽:Black 默认的行宽是 88 字符,但你可以根据项目要求调整。在 VS Code 的设置中,添加如下配置即可将行宽改为 100:

"python.formatting.blackArgs":["--line-length","100"]

解决工具冲突:如果你同时安装了多个格式化工具或 Linter(如 flake8),可能会产生规则冲突。如果确定使用 Black,可以在设置中禁用其他格式化器以避免冲突。

"python.formatting.autopep8Enabled":false,"python.formatting.yapfEnabled":false

💎 如何选择

简单来说:

  • 如果你追求极简、统一,不想在代码风格上做任何决策,直接选择 Black
  • 如果你的项目有非常特殊或严格的定制化格式要求,可以尝试 yapf
  • 如果你只需要一个工具来辅助修复代码使其符合 PEP 8autopep8 是个温和的选择。

Read more

C++ 继承入门(上):从基础概念定义到默认成员函数,吃透类复用的核心逻辑

C++ 继承入门(上):从基础概念定义到默认成员函数,吃透类复用的核心逻辑

🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》 《C++入门到进阶&自我学习过程记录》《算法题讲解指南》--从优选到贪心 ✨未择之路,不须回头 已择之路,纵是荆棘遍野,亦作花海遨游 目录 前言 一. 继承的概念与定义   1、继承的核心概念   2、继承的定义格式   3、继承方式与成员访问权限 二. 基类与派生类的转换:子类对象能当父类用吗? 三. 继承中的作用域:同名成员会冲突吗?   1、变量隐藏   2、函数隐藏 四、派生类的默认成员函数:构造、拷贝、析构怎么写?   1、构造函数:先调用父类构造,再初始化子类成员   2、拷贝构造:先拷贝父类,再拷贝子类   3、 赋值重载:

By Ne0inhk
2024第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

2024第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲:  1、握手问题-(解析)-简单组合问题(别人叫她 鸽巢定理)😇,感觉叫高级了  2、小球反弹-(解析)-简单物理问题,不太容易想  3、好数-(解析)-简单运用分支计算  4、R 格式-(解析)-高精度,不是快速幂😉  5、宝石组合-(解析)-lcm推论(gcd、lcm结合)  6、数字接龙-(解析)-DFS(蓝桥专属、每年必有一道)  7、拔河-(解析)-定一端,动一端😎 题目: 1、握手问题 问题描述

By Ne0inhk
【C++笔记】STL详解:string的实现

【C++笔记】STL详解:string的实现

前言:                 在前面的学习中,我们已经初步掌握了string类接口函数的使用方法,本文将带领大家从零开始,逐步实现一个完整的string类。          一、string类总览                 温馨提示: 为了避免与标准库中的string产生命名冲突,我们使用mystd命名空间进行封装。 namespace mystd { class string { public: //迭代器 typedef char* iterator; typedef const char* const_iterator; //默认成员函数 string(); string(const char* str); //构造函数 string(const string& s); //拷贝构造函数 string& operator=(const string& s); //赋值运算符重载函数 ~string(); //析构函数 //迭代器相关函数 iterator begin(

By Ne0inhk