首页 > 编程语言 >Python学习笔记27:进阶篇(十六)常见标准库使用之质量控制中的代码质量与风格第一部分

Python学习笔记27:进阶篇(十六)常见标准库使用之质量控制中的代码质量与风格第一部分

时间:2024-07-03 21:27:33浏览次数:17  
标签:27 Python 代码 PEP 进阶篇 质量 使用 工具

前言

本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。

根据模块知识,一次讲解单个或者多个模块的内容。

教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html

质量控制

质量控制(Quality Control, QC),主要关注于提高代码质量、确保数据准确性和程序稳定性。

QC可以通过多种实践、工具和库来实现,其中主要包括以下方面:

  1. 代码质量与风格
    PEP 8: Python官方风格指南,遵循PEP 8可以确保代码的一致性和可读性。
    Linting工具: 如flake8, pylint, 或black,这些工具可以自动检查代码风格错误、潜在的bug以及不符合最佳实践的地方。
    单元测试: 使用unittest或pytest库编写测试用例,确保代码功能按预期工作,这是软件质量控制的基础。
  2. 数据质量
    Pandas: 对于数据分析任务,Pandas库提供了强大的数据清洗功能,如去除或填充缺失值、数据类型转换、数据验证等。
    数据验证库: pydantic用于数据验证和设置数据模型,确保输入数据符合预期格式。
    异常值检测: 利用科学计算库scipy或直接在Pandas中进行统计分析,如Z-score或IQR方法,来识别并处理数据集中的异常值。
  3. 文档与注释
    docstrings: 遵循PEP 257编写文档字符串,提供函数、类和模块的自解释文档。
    Sphinx: 用于生成高质量的项目文档,支持从docstrings自动生成文档。
  4. 性能与优化
    Profiling: 使用cProfile或第三方库如line_profiler进行性能分析,找出程序中的瓶颈。
    Memory Profiling: memory_profiler库可以帮助监测内存使用情况,避免内存泄漏。
  5. 持续集成/持续部署(CI/CD)
    GitHub Actions, GitLab CI/CD, Travis CI等服务,可以自动化代码测试、构建和部署流程,确保每次提交的质量。
  6. 代码审查
    工具如Gerrit, GitHub PR Reviews促进团队成员间的代码审查,提前发现并修正问题。

代码质量与风格

之前最开始的学习的时候我就有提过要保持一个好的编码习惯,这不是空话。在软件开发中,代码质量与风格是维护项目长期健康发展的基石。
遵循良好的编程规范不仅能够提升代码的可读性和可维护性,还能促进团队成员之间的有效协作。

PEP 8: Python官方风格指南

PEP 8是指Python Enhancement Proposal(Python增强提案)中的第8号提案,它是Python社区关于编写Python代码时应遵循的官方风格指南。PEP 8旨在提升代码的可读性和一致性,使Python代码更加易于理解与维护。

虽然某些情况下根据具体项目需求可能会有所变通,但遵循PEP 8通常被认为是最佳实践。

这里只总结一些内容,想更细致的了解需要自行学习。

基本原则
代码布局: 代码应该有清晰的层次结构,使用空行分割函数定义、类定义以及大块的代码逻辑。
缩进: 一致使用4个空格进行缩进,避免使用制表符或混合使用制表符与空格。
行长度: 建议每行代码不超过79字符,这样可以避免水平滚动,并能在大多数编辑器中并排显示文件。对于长表达式,可以使用括号换行。
命名约定: 变量名、函数名应小写字母加下划线(snake_case)。 类名采用驼峰命名法(CapWords,即每个单词首字母大写,不使用下划线)。常量全大写,单词间用下划线分隔。 空白: 操作符两边、逗号后应有空格,关键字之后(如if, for等)也应有空格,但函数定义的参数列表、索引或切片操作除外。
注释: 注释应清晰、简洁,使用英文书写。模块级文档字符串(docstring)应使用三引号包围,遵循特定格式。 特殊情况处理 导入语句:
应放在文件顶部,按照标准库、第三方库、本地应用/库的顺序排列,每组之间用空行分隔。可以使用绝对导入而非相对导入以增加清晰度。
字符串引用: 对于单行字符串,如果字符串中包含单引号且没有双引号,推荐使用单引号;反之亦然。多行字符串应使用三引号。
空行: 类定义之间、顶级函数或类定义之间应有两个空行;方法定义内逻辑段落间使用一个空行分隔。
其他指导
异常: 使用异常处理机制时,应尽量捕获具体的异常而不是泛泛的Exception,并合理地处理或重新抛出异常。
类型注解: 自Python3.5起,可以使用类型提示来增加代码的可读性和工具的可用性,但应保持简洁,不强制要求。

Linting工具

Linting工具是编程中用来自动检查代码质量和风格的软件,它们能够帮助开发者识别潜在的错误、不符合编程规范的地方以及提高代码的一致性和可读性。
对于Python编程语言,有几个知名的Linting工具,它们各有特点,广泛应用于代码质量控制流程中:

  • Flake8
    简介: Flake8是将pycodestyle(原pep8)、pyflakes和mccabe三个工具整合在一起的工具,它检查PEP 8编码规范、语法错误以及复杂的代码结构。
    特点: 能够快速指出代码中不符合PEP 8风格的地方,同时检测未使用的变量、导入错误等简单的程序错误。
    使用: 安装简单,可通过pip安装 (pip install flake8),之后在命令行中运行flake8 your_file.py即可。
  • Pylint
    简介: Pylint是一个更为严格的静态代码分析工具,它不仅仅检查代码风格,还对代码进行复杂的静态分析,寻找潜在的错误,比如未使用的变量、无效的语句、不符合最佳实践的代码结构等。
    特点: 功能强大,提供大量可配置的检查规则,支持更多的代码质量检查,包括复杂度分析、重复代码检测等。
    使用: 同样通过pip安装 (pip install pylint),使用时运行pylint your_file.py。
  • Black
    简介: Black是一个代码格式化工具,它不是传统意义上的Linting工具,因为它不报告错误而是直接修改代码,使其符合一套严格的格式化规则。尽管如此,它在实践中被广泛用于保持代码风格的一致性。
    特点: 黑色(Black)强调“不可商量”的代码格式化,一旦配置好,它会自动格式化代码,无需人工调整空格、缩进等,减少了团队间因代码风格不同而产生的摩擦。
    使用: 通过pip安装 (pip install black),使用命令black your_file.py自动格式化代码。

综合使用
在实际开发中,这些工具经常被结合使用,例如先用Black自动格式化代码,确保基础的格式一致性,再用Flake8或Pylint进一步检查代码质量。许多开发环境和IDE(如Visual Studio Code、PyCharm)也支持集成这些工具,提供即时反馈,帮助开发者在编码过程中即时修正问题。

这些工具不多讲,因为我们之前已经安装了PyCharm,这段时间的学习中应该也能发现,IDE会在你的代码中出现提示,对问题代码或者不符合规范的代码进行标示。

结尾

质量控制我个人觉得是比较重要的一部分内容,实践方面也还有很多内容,除去代码质量以外,还有数据质量,文档注释,性能优化等等。

就是今天的代码质量也还有很重要的一部分:单元测试没看完,内容不少,慢慢学习。

标签:27,Python,代码,PEP,进阶篇,质量,使用,工具
From: https://blog.csdn.net/weixin_48668564/article/details/140160978

相关文章

  • 【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法
    一、介绍坚果识别系统,使用Python语言进行开发,通过TensorFlow搭建卷积神经网络算法模型,对10种坚果果实('杏仁','巴西坚果','腰果','椰子','榛子','夏威夷果','山核桃','松子','开心果','核桃')等图片数据集进行训练,得到一个识别精度较高的模型文件,让后......
  • python更新包、pip延时报错,pip check 查询冲突
    pip下载package或者更新package会出现延迟报错的问题,因为python默认使用的是国外镜像,有时候下载非常慢,我们可以选择进行换源,引用国内的镜像资源进行更新或者下载。阿里云: http://mirrors.aliyun.com/pypi/simple/中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/......
  • Web安全基础学习:Python反序列化漏洞之pickle反序列化
    理论基础序列化与反序列化序列化和反序列化是指用于将对象或数据结构转换为字节流的过程,以便在不同系统之间进行传输或存储,并在需要时重新构造。序列化是指将对象或数据结构转换为字节流的过程。在序列化过程中,对象的状态和数据被转换为一系列字节,这些字节可以按照一定......
  • Python运算符
    一,算数运算符1.什么是算数运算符算数运算符是用于进行数学运算的符号。运算符用于对数字进行加减乘除等数学运算,并返回运算结果。2.算数运算符的分类基础的      加(+) 减(-) 乘(*) 除(/)   四则运算(这些是我们上小学都开始学的了)在Python中还有一些我们经......
  • 代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素
    704.二分查找这个之前有写过,最重要的就是把握住要去搜索的区间的形式,包括左闭右闭以及左闭右开两种classSolution{publicintsearch(int[]nums,inttarget){intleft=0,right=nums.length;while(left<right){//左闭右开的版本,结果存储......
  • python的运算符
    算数运算符   python算数运算符有七种,{+,-,*,/,%,//,**}         +表示求和a=10b=20c=a+bprint(c)          -表示相减a=10b=20c=b-aprint(c)    *表示相乘a=10b=20c=a*bprint(c......
  • 2736 卡片重排
    题目描述Description可可共有两种卡片,一种卡片是数字0-9编号,一种卡片是字母A-Z编号,现在两种卡片混在一起,可可想将它们归类摆放,但是要求同类卡片中,它们相对位置不可以改变,原先在前的仍然在前,具体规则还可参考样例理解。输入描述InputDescription一行,若干数字及字母,中间无......
  • 这个神器绝了!可视化 Python 打包 exe
     在Python开发中,如何将脚本打包成独立的可执行文件,是许多开发者面临的挑战。特别是在需要将应用程序分发给不具备Python环境的用户时,打包工具显得尤为重要。auto-py-to-exe作为一款强大的Python打包工具,为开发者提供了简便快捷的解决方案。那么,auto-py-to-exe究竟是如何简化......
  • YC309A [ 20240627 CQYC省选模拟赛 T1 ] 或(or)
    题意给定一个可重集\(S\),求所有的前缀的集合的代价。定义一个集合的代价为:\[\max_x\left((\max_ib_i\lvertx)-(\min_ib_i\lvertx)\right)\]\(n\le10^6,V\le2\times10^6\)Sol首先看到这个式子直接开划。称较大的数为\(b_i\),较小的数为\(b_j\)。直......
  • Python预测体重变化:决策树、tf神经网络、随机森林、梯度提升树、线性回归可视化分析吸
    全文链接:https://tecdat.cn/?p=36648原文出处:拓端数据部落公众号在当今的数据驱动时代,机器学习算法已成为解析复杂数据集、揭示隐藏模式及预测未来趋势的重要工具。特别是在医疗健康领域,这些算法的应用极大地提升了我们对疾病预防、诊断及治疗方案的理解与制定能力。本文旨在通......