当前位置: 首页 > news >正文

【Ubuntu20】VSCode Python代码规范工具配置 Pylint + Black + MyPy + isort

 常用工具:

在 Ubuntu20 下,有以下常见的 Python 代码工具:

静态分析工具:

Pylint 和 Flake8

功能范围:Pylint功能非常强大,能够检查代码质量、潜在错误、代码风格、复杂度等多个方面, 并生成详细的报告。Flake8 更专注于代码风格和语法检查,结合了多个独立的工具 pyflakes、pycodestyle 和 mccabe,提供一致的代码风格和静态错误检查。
配置选项:Pylint提供了广泛的配置选项,可以根据项目的需求进行灵活的定制。它允许你通过配置文件或命令行参数来调整规则的行为。Flake8的配置选项相对较少,主要通过配置文件进行设置。也提供了一些额外的插件和扩展,可以增加一些功能和定制选项。

自动格式化 Python 代码工具:

  1. 代码格式化风格 
    1. Yapf:Yapf 的格式化风格比较灵活。它默认会尽量减少代码的行数,同时也会考虑代码的可读性。例如,在格式化函数参数列表时,它可能会根据一定的规则对参数进行换行和缩进处理,以使得代码看起来紧凑但又不失条理。它也支持多种风格配置,用户可以通过配置文件指定缩进宽度、换行方式等格式化选项,以满足不同的代码风格需求。
    2. Autopep8:Autopep8 严格遵循 PEP8 风格指南进行格式化。PEP8 是 Python 社区广泛接受的代码风格规范,它对代码的缩进、空格使用、命名规范等方面都有详细的规定。Autopep8 会自动检测代码中不符合 PEP8 规范的部分,并将其转换为符合规范的形式。例如,它会确保每行代码的长度不超过 79 个字符(PEP8 推荐),正确使用空格来分隔运算符和操作数等。
    3. Black:Black 也遵循 PEP8 风格,但它的格式化风格更加强硬和一致。它会强制采用一种特定的格式化方式,几乎没有太多可调整的空间。例如,Black 对代码的缩进、括号的使用、函数和变量的命名等都有严格的格式化规则,并且会统一处理,使得所有被格式化的代码看起来非常整齐划一,风格高度一致。
  2. 可定制性程度 
    1. Yapf:Yapf 具有较高的可定制性。用户可以通过配置文件(.style.yapf)详细地指定各种格式化选项。比如,用户可以设置不同类型的缩进方式(空格或制表符)、缩进的宽度(可以是 2 个空格、4 个空格等)、每行的最大字符数、如何处理换行等众多选项。这使得 Yapf 能够适应不同开发者的个人偏好和不同项目的特殊要求。
    2. Autopep8:Autopep8 的可定制性相对较弱。它主要是围绕 PEP8 规范进行格式化,虽然可以通过一些命令行参数来控制部分行为,如忽略某些特定的错误代码或者指定最大行长度等,但整体上可定制的范围比较有限,因为它的主要目的是确保代码符合 PEP8 标准。
    3. Black:Black 的可定制性是三者中最低的。它有一套固定的格式化规则,几乎没有太多用户可自定义的选项。这种设计理念是为了减少在代码风格上的争论,强制推行一种统一的、被认为是最佳实践的格式化风格。虽然在某些情况下可能无法满足一些特殊的格式化需求,但它能够保证代码在不同项目和团队之间具有高度一致的风格。
  3. 对代码的修改程度和方式 
    1. Yapf:Yapf 在格式化时会根据配置和代码的实际情况进行相对灵活的修改。它会考虑如何在保持代码原有逻辑和结构的基础上,优化代码的布局和格式。例如,在处理长函数调用或者复杂的表达式时,它会根据用户设置的换行规则和缩进规则进行合理的换行和缩进,以提高代码的可读性,并且尽量减少对代码逻辑的干扰。
    2. Autopep8:Autopep8 主要是对不符合 PEP8 规范的代码进行纠正。它会逐个检查代码中的元素,如变量命名、空格使用、换行等方面是否符合 PEP8 标准。如果发现不符合的地方,就会按照 PEP8 的要求进行修改。例如,如果代码中存在不符合 PEP8 规范的变量命名(如使用了不符合命名规则的缩写),Autopep8 会将其修改为符合规范的命名。
    3. Black:Black 对代码的修改比较激进。它会按照自己的固定规则对代码进行全面格式化,不管代码原来的风格如何。例如,它可能会重新排列函数参数的顺序、改变括号的位置等,以达到它所要求的风格一致。这可能会导致代码在格式化后与原始版本相比,在布局和外观上有较大的变化,但它能够确保代码在格式化后完全符合它的风格规则。

Pylint 配置:

安装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 配置:

安装Black插件,设置setting.json:

  "[python]": {"editor.defaultFormatter": "ms-python.black-formatter","editor.codeActionsOnSave": {"source.organizeImports": true},"editor.formatOnSave": true,},"black-formatter.args": ["--line-length","88"],

相关文章:

【Ubuntu20】VSCode Python代码规范工具配置 Pylint + Black + MyPy + isort

​ 常用工具: 在 Ubuntu20 下,有以下常见的 Python 代码工具: 静态分析工具: Pylint 和 Flake8 功能范围:Pylint功能非常强大,能够检查代码质量、潜在错误、代码风格、复杂度等多个方面, 并生成详细的报…...

游戏提示错误:xinput1_3.dll缺失?四种修复错误的xinput1_3.dll文件

在计算机的运行过程中,我们可能会遇到各种各样的问题,其中与“xinput1_3.dll”相关的问题也并不罕见。“xinput1_3.dll”是一个在许多游戏和多媒体应用程序运行过程中可能会用到的动态链接库文件。当我们启动某些游戏时,可能会突然弹出一个错…...

YOLOv11融合IncepitonNeXt[CVPR2024]及相关改进思路

YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 一、 模块介绍 论文链接:https://arxiv.org/abs/2303.16900 代码链接:https://github.com/sail-sg/inceptionnext 论文速览:受 ViT 长距离建模能力的启发,大核卷积…...

[Web安全 网络安全]-学习文章汇总导航(持续更新中)

文章目录: 一:学习路线资源 1.路线 2.资源 二:工具 三:学习笔记 1.基础阶段 2.进阶阶段 四:好的参考 五:靶场 博主对网络安全很感兴趣,但是不知道如何取学习,自己一步一步…...

Docker Compose部署Rabbitmq(Docker file安装延迟队列)

整个工具的代码都在Gitee或者Github地址内 gitee:solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github:GitHub - ZeroNing/solomon-parent: 这个项目主要是…...

SpringBoot+FileBeat+ELK8.x版本收集日志

一、准备环境 1、ElasticSearch:8.1.0 2、FileBeat:8.1.0 3、Kibana:8.1.0 4、logstach:8.1.0 本次统一版本:8.1.0,4个组件,划分目录,保持版本一致。 说明:elasticsearch和kib…...

本地模型导入ollama

文章目录 Modelfile模板导入到 ollama Modelfile模板 在本地模型目录下创建 Modelfile FROM ./qwen2.5-7b-instruct-q4_k_m.gguf# 设定温度参数为1 [更高的更具有创新性,更低的更富有连贯性] PARAMETER temperature 1 # 将上下文窗口大小设置为4096,这…...

scala Map训练

Map实训内容: 1.创建一个可变Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。 2.使用 操作符添加两本新的书籍到图书馆集合中。 3.根据书籍编号查询某一本特定的书籍信息&…...

WorkFlow源码剖析——Communicator之TCPServer(下)

WorkFlow源码剖析——Communicator之TCPServer(下) 前言 系列链接如下: WorkFlow源码剖析——GO-Task 源码分析 WorkFlow源码剖析——Communicator之TCPServer(上) WorkFlow源码剖析——Communicator之TCPServer&…...

数据结构与算法分析:专题内容——动态规划2之例题讲解(代码详解+万字长文+算法导论+力扣题)

一、最长公共子序列 在生物应用中,经常需要比较两个(或多个)不同生物体的 DNA。一个 DNA 串由一串称为碱基(base)的分子组成,碱基有腺嘌呤、鸟嘌呤、胞嘧啶和胸腺嘧啶 4 种类型。我们用英文单词首字母表示 4 种碱基,这样就可以将一个 DNA 串…...

【Qt】QTreeView 和 QStandardItemModel的关系

QTreeView 和 QAbstractItemModel(通常是其子类,如 QStandardItemModel 或自定义模型)是 Qt 框架中的两个关键组件,它们之间存在密切的关系。 关系概述 QTreeView: QTreeView 是一个用于显示和编辑层次数据的视图小部…...

containerd配置私有仓库registry

机器ip端口regtisry192.168.0.725000k8s-*-------k8s集群 1、镜像上传 rootadmin:~# docker push 192.168.0.72:5000/nginx:1.26.1-alpine The push refers to repository [192.168.0.72:5000/nginx] 6961f0b8531c: Pushed 3112cd521249: Pushed d3f50ce9b5b5: Pushed 9efaf2eb…...

深入解析语音识别中的关键技术:GMM、HMM、DNN和语言模型

目录 一、高斯混合模型(GMM)与期望最大化(EM)算法二、隐马尔可夫模型(HMM)三、深度神经网络(DNN)四、语言模型(LM)五、ASR系统的整体工作流程结论 在现代语音…...

C++循环引用

C循环引用‌指的是两个或多个类之间互相引用对方,形成一个循环的引用关系。 循环引用的问题: 编译错误‌:编译器在编译过程中会按照包含关系依次编译每个文件,当编译ClassA时,它会尝试包含ClassB.h文件,而…...

dayseven-因果分析-图模型与结构因果模型

在数学上,​“图”(graph)是顶点(vertex,也可以称为节点)和边(edge)的集合,表示为图G(V,E),其中V是节点的集合,E是边的集合,图中的节点之间通过边相连(也可以不相连&…...

并发编程(8)—— std::async、std::future 源码解析

文章目录 八、day81. std::async2. std::future2.1 wait()2.2 get() 八、day8 之前说过,std::async内部的处理逻辑和std::thread相似,而且std::async和std::future有密不可分的联系。今天,通过对std::async和std::future源码进行解析&#x…...

稻米分类和病害检测数据集(猫脸码客 第237期)

稻米分类图像数据集:推动农业智能化发展的关键资源 在农业领域,稻米作为世界上最重要的粮食作物之一,其品种繁多,各具特色。然而,传统的稻米分类方法往往依赖于人工观察和经验判断,不仅耗时费力&#xff0…...

HANDLINK ISS-7000v2 网关 login_handler.cgi 未授权RCE漏洞复现

0x01 产品简介 瀚霖科技股份有限公司ISS-7000 v2网络网关服务器是台高性能的网关,提供各类酒店网络认证计费的完整解决方案。由于智慧手机与平板电脑日渐普及,人们工作之时开始使用随身携带的设备,因此无线网络也成为网络使用者基本服务的项目。ISS-7000 v2可登录300至1000…...

基于Multisim串联型连续可调直流稳压正电源电路设计与仿真

设计任务和要求: (1)输出直流电压 1.5∽10V 可调; (2)输出电流 IOm300mA;(有电流扩展功能) (3)稳压系数 Sr≤0.05; (4&…...

【QT】Qt文件和多线程

个人主页~ Qt系统内容 一、Qt文件1、文件读写读写 2、文件和目录信息 二、多线程1、线程使用timethread.hwidget.htimethread.cppwidget.cpp 2、线程安全(1)互斥锁QMutexQMutexLocker一个例子mythread.hmythread.cppwidget.cpp QReadWriteLocker、QReadL…...

【位运算】消失的两个数字(hard)

消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)​现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析

LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...