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

Python学习之路-编码风格

Python学习之路-编码风格

设计哲学

Python的设计哲学是“优雅”、“明确”、“简单”。它的重要准则被称为“Python之禅”。Python之禅又名PEP 20,在Python解释器内运行import this可以获得完整的列表,下面是我的翻译与解读:

提姆·彼得斯(Tim Peters)撰写的《 Python之禅 》
优雅胜于丑陋(以编写优雅的代码为目标)
明确胜于晦涩(明确的代码增强了程序的可读性)
简单胜于复杂(简单的代码能解决复杂的问题)
复杂胜于凌乱(如果项目变得复杂,那代码间也要保持简洁)
扁平胜于嵌套(优雅的代码应该是扁平的,不能有太多嵌套)
间隔胜于紧凑(优雅的代码应当有适当的间隔,不要写一些为了缩减代码丢失了可读性)
可读性很重要(代码的可读的非常重要)
即便假借特例的实用性之名,也不可违背这些规则(这些规则是写Python程序的必备条件)
不要包容所有错误,除非你确定需要这样做(代码中不能存在错误,要善于使用捕获异常)
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案
虽然这并不容易,因为你不是 Python 之父(虽然你不是Guido,在设计程序时应该多思考,找出最好的解决方案)
做也许好过不做,但不假思索就动手还不如不做(要思考好之后再开始写代码)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(好的方案是人人都能懂得方案)
命名空间是一种绝妙的理念,我们应当多加利用(要善于利用命令空间)

Python开发的哲学是“用一种方法,最好是只有一种方法来做一件事”。在设计Python程序时,如果面临多种选择,一般会拒绝花俏的语法,而选择明确没有或者很少有歧义的语法。

编码规范

PEP 8是由Guido van Rossum , Barry Warsaw , Nick Coghlan三位共同编写的一个Python代码风格规范。可以在这里查看具体内容,如果英文不好可以在Python风格指南中查看主要的内容

检查工具

pylint是一个Python代码风格的检查工具, 它依据的标准是Guido van Rossum的PEP 8。

pylint类似于PyChecker, 但提供了更多的功能, 如检查代码行的长度, 检查变量命名是否符合编码规范, 或检查声明的接口是否被真正的实现, 完整的检查功能请参见http://www.logilab.org/card/pylintfeatures。

pylint的最大优势在于其高度的可配置化和可定制化,你可以很容易地写一个小插件添加个人功能。

用法示例

 pylint.bat --reports=n --include-ids=y --disable-msg=W0122,W0702 xlsconverter.py > lint_result.txt

其中:

  • –reports=n 表示不产生输出报告
  • –include-ids=y 表示输出的错误信息包含错误编号
  • –disable-msg=W0122,W0702 表示W0122和W0702这两个警告信息被过滤掉了
  • xlsconverter.py 是被检查的脚本
  • 检查的结果被输出到了lint_result.txt中。

{{< admonition tip “提示” true >}}
任何语言的程序员,编写出符合规范的代码,是开始程序生涯的第一步。PEP 20和PEP 8陪伴我们整个学习和使用Python的过程。

{{< /admonition >}}

相关文章:

  • 外包做了5个月,技术退步一大半了。。。
  • 《计算机网络》 第三章 数据链路层
  • PostgreSQL ZIP版安装完全手册
  • Diffusion扩散模型学习3:Unet学习实现
  • 2023春季李宏毅机器学习笔记 03 :机器如何生成文句
  • 【实用技巧】Windows 电脑向iPhone或iPad传输视频方法1:无线传输
  • 杨中科 ASP.NET Core 中的依赖注入的使用
  • 寒假前端第一次作业
  • 模型\视图一般步骤:为什么经常要用“选择模型”QItemSelectionModel?
  • Android 事件分发介绍
  • scala 安装和创建项目
  • 代码随想录算法训练营Day20 | 40.组合总和||、39.组合总和、131.分割回文串
  • 图片分类的脚本
  • 【设计模式】创建型模式之单例模式(Golang实现)
  • LLM漫谈(二)| QAnything支持任意格式文件或数据库的本地知识库问答系统
  • [PHP内核探索]PHP中的哈希表
  • [deviceone开发]-do_Webview的基本示例
  • [Vue CLI 3] 配置解析之 css.extract
  • Computed property XXX was assigned to but it has no setter
  • Effective Java 笔记(一)
  • extract-text-webpack-plugin用法
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Terraform入门 - 1. 安装Terraform
  • Yii源码解读-服务定位器(Service Locator)
  • 动态规划入门(以爬楼梯为例)
  • 后端_ThinkPHP5
  • 回顾2016
  • 目录与文件属性:编写ls
  • 前端_面试
  • 前端相关框架总和
  • 收藏好这篇,别再只说“数据劫持”了
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 写代码的正确姿势
  • 一个JAVA程序员成长之路分享
  • 中文输入法与React文本输入框的问题与解决方案
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (3)(3.5) 遥测无线电区域条例
  • (8)STL算法之替换
  • (C语言)共用体union的用法举例
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)h264中avc和flv数据的解析
  • (转)Mysql的优化设置
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .net FrameWork简介,数组,枚举
  • .Net 代码性能 - (1)
  • .net对接阿里云CSB服务
  • .NET框架
  • .NET中GET与SET的用法