在VSCode中编写python代码,代码规范工具介绍与推荐
引言
- 日常中,写的最多的代码是Python,虽说是算法工程师,这不也是工程师嘛,所以基本的代码功底还是要有的。
- 由于Python是动态类型语言,没有强制的约束,如果没有一些相应规范,会导致大家写的代码可读性较差,且潜在的问题难以发现。
- 因此,本文旨在引入一些工具来帮助大家写出更加健壮的代码。
结论
- 先说结论,节省大家时间:
- Pylint + Black + MyPy + isort
- 以上四个工具结合,可以写入较为规范整洁的代码。当然,具体质量如何,还在自身,工具只是次要。谨记。
Pylint介绍以及VSCode配置
Pylint介绍
- Pylint是一个Python代码静态分析工具。它能够检查代码质量、潜在错误、代码风格、复杂度等多个方面。同时具有广泛的配置选项,可以根据项目的需求惊醒灵活的定制。
- 值得一提的是,小伙伴可能会困惑于Pylint和Flake8的关系,以及为什么选用Pylint?
- 这个问题也曾困扰着我,因为我的VSCode插件中,总是默认安装着Flake8这个插件,至于其作用,从未有过详细追究。今天通过网上搜索,得以明白二者区别联系:
- 区别:
- 功能范围:Pylint是一个功能非常强大的工具,它能够检查代码质量、潜在错误、代码风格、复杂度等多个方面。Pylint提供了大量的检查规则,并生成详细的报告。相比之下,Flake8更专注于代码风格和语法检查,它结合了多个独立的工具,包括pyflakes、pycodestyle和mccabe,以提供一致的代码风格和静态错误检查。
- 配置选项:Pylint提供了广泛的配置选项,可以根据项目的需求进行灵活的定制。它允许你通过配置文件或命令行参数来调整规则的行为。Flake8的配置选项相对较少,主要通过配置文件进行设置,但它提供了一些额外的插件和扩展,可以增加一些功能和定制选项。
- 联系:
-
静态分析:Pylint和Flake8都是静态分析工具,用于在代码编写阶段检测潜在的问题。它们可以自动检查代码,发现语法错误、未使用的变量、不符合代码风格指南的部分等。
-
插件支持:Pylint和Flake8都支持使用插件来扩展其功能。你可以根据需要选择并添加适合的插件来满足特定项目的需求。
-
社区支持:Pylint和Flake8都有活跃的用户社区,提供了文档、示例和支持论坛。这使得你可以从其他用户的经验中学习,并获得反馈和帮助。
-
与集成开发环境(IDE)的整合:Pylint和Flake8都可以与多个常用的Python集成开发环境(IDE)进行整合,例如PyCharm、Visual Studio Code等。这使得你可以在开发过程中即时获得代码检查和建议。
-
- 最终结论:选择Pylint。
VSCode配置
- 安装
Pylint
插件 - 配置
setting.json
"pylint.importStrategy": "useBundled", "pylint.args": [ "--disable=invalid-name,missing-module-docstring", "--disable=W0612,W0631,W0703,W0621,W0613,W0611,W1308,C0411,C0111,C0103,C0301,C0304,C0305,E1101,R0913,R0914,R0915,R0903" , ]
Black介绍以及VSCode配置
Black介绍
- Black是一个自动格式化Python代码的工具,旨在提供一种统一的代码风格。其遵循一组严格的规则和约定,确保不同开发者的代码在格式上具有一致性。工作原则是“不需要配置”。
- 与yapf、autopep8相比,为什么选择Black?
- 因为懒,不想配置过多东西。感兴趣小伙伴可自行比较三者区别。
VSCode配置
- 安装
Black Formatter
插件 - 配置
setting.json
"[python]": { "editor.defaultFormatter": "ms-python.black-formatter", "editor.codeActionsOnSave": { "source.organizeImports": true }, "editor.formatOnSave": true, },
MyPy介绍以及VSCode配置
MyPy介绍
- MyPy是一个静态类型检查工具。其特点在于:当代码中添加类型注解后,MyPy支持类型推断、类型提示和类型注释功能。
- 要想使用这款工具,需要更改一下日常习惯,为函数参数添加类型注解,这也增加代码可读性。当然,起初这是一件比较痛苦的事情,习惯以后,受益良多。
VSCode配置
- 安装插件
Mypy Type Checker
- 配置
setting.json
"mypy-type-checker.importStrategy": "useBundled", "mypy-type-checker.args": [ "--follow-imports=skip", "--ignore-missing-imports", "--show-column-numbers", "--allow-untyped-defs", "--allow-subclassing-any", "--allow-untyped-calls", "--no-warn-no-return" ],
isort
- 这个工具是用来对py文件中的import排序用的。可以简单配置为Black的规则即可。
VSCode配置
- 安装
isort
插件 - 配置
setting.json
"isort.args":["--profile", "black"],
完整的setting.json配置
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.codeActionsOnSave": {
"source.organizeImports": true
},
"editor.formatOnSave": true,
},
"isort.args":["--profile", "black"],
"mypy-type-checker.importStrategy": "useBundled",
"mypy-type-checker.args": [
"--follow-imports=skip",
"--ignore-missing-imports",
"--show-column-numbers",
"--allow-untyped-defs",
"--allow-subclassing-any",
"--allow-untyped-calls",
"--no-warn-no-return"
],
"pylint.importStrategy": "useBundled",
"pylint.args": [
"--disable=invalid-name,missing-module-docstring",
"--disable=W0612,W0631,W0703,W0621,W0613,W0611,W1308,C0411,C0111,C0103,C0301,C0304,C0305,E1101,R0913,R0914,R0915,R0903" ,
]
-----------------------------------------
你驻足于春色中,于那独一无二的春色之中。