如何制定python编码规范,符合PEP 8

嗨,我是兰若,今天在检查代码的时候,发现了一个很严重但是大家平时却不重视的问题,就是编码格式规范,很多人在平时写python脚本的时候,

总是胡乱发挥,想怎么命名就怎么命名,,这样就导致后续其他的人在看他的代码的时候很痛苦,完全不知道这个家伙写的是什么,除了这种情形之外,还有其他情形,比如代码拉下来后,看到有个文件少了一个换行,于是赶紧换行一下,其实这个文件什么都内容没有改,但是仍然会变成蓝色文件名,作为一个变更被追踪,所以项目之初,就应该有一个编码格式规范供大家查阅,这里我简单的总结了以下几种:

以下是将上述内容转换为 Markdown 格式的版本:

Python 编码规范

代码布局

  1. 统一使用 4 个空格缩进。

  2. 单行最大长度为 100。

  3. 行数超过规定时,建议用小括号 () 将多行内容连接起来,而不推荐使用反斜杠 \ 进行连接。

  4. 不要在代码末尾加分号,也不要用分号将两条命令写在同一行。

  5. 空行使用:

  6. 函数之间用两个空行隔开。

  7. 类之间用两个空行隔开。

  8. 类中方法用一个空行隔开。

  9. 函数中不同逻辑代码块之间可适当插入空行。

  10. 空格使用:

  11. 在二元运算符两边都要有空格。二元运算包括:算术(+ - * / **),赋值(=, +=, -=),比较(==, <, >, !=, in, not in, is, is not),逻辑运算(and, or, not),位运算(&, |, !, ~, >>, <<)。

  12. 函数关键字参数=两侧不需要空格。例: res = func(name="Tom")

  13. 逗号后面要加空格,但如果后面是小括号则不用。例: List=[1, 2, 4]

  14. 冒号前不加空格,冒号后要加空格。但是切片里前后都不可加空格。例: Dict = {key: value}

  15. 不要为对齐赋值语句而使用的额外空格。

命名规范

  1. 普通变量使用下划线分隔命名法,即蛇形命名法。例: max_value

  2. 变量名和 Python 关键字冲突,在变量末尾追加下划线。例: type_

  3. 避免使用双下划线开头并结尾的名称,该命名方式为 Python 保留字。例: __init__ 用于类初始化。

  4. 常量用全大写字母,用下划线连接。例: MAX_VALUE

  5. 函数名遵循蛇形命名法。例: def get_user_info

  6. 类名使用驼峰命名法。例: class ControllerService

  7. 类中私有属性和方法用单下划线开头。该定义仅为君子约定,实例化可以访问。例: def _private_fun()

  8. 类中不希望被继承的变量用双下划线开头。例: __user_info

  9. 模块应该用简短全小写的名字,如果为了提升可读性,下划线也是可以用的。

  10. 包使用简短全小写的名字,但不建议用下划线。

函数设计

  1. 函数设计要尽量短小,100 行是一个参考值。

  2. 一个函数只做一件事,保证函数语句粒度的一致性。

  3. 禁止使用可变类型作为函数参数默认值。

模块导入

  1. 一个 import 语句导入一个模块。

注释规范

  1. 代码块注释使用 #,接口注释使用 """

  2. 块注释应该至少离开代码 2 个空格, # 后面跟一个空格。

  3. 公共函数,重要的函数必须写接口注释。

  4. 逻辑复杂,难以理解,脚本代码等情况必须要有注释。

  5. 代码修改要同步更新注释。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 PostgreSQL 中确保数据的异地备份安全性?

文章目录 一、备份策略1. 全量备份与增量备份相结合2. 定义合理的备份周期3. 选择合适的备份时间 二、加密备份数据1. 使用 PostgreSQL 的内置加密功能2. 使用第三方加密工具 三、安全的传输方式1. SSH 隧道2. SFTP3. VPN 连接 四、异地存储的安全性1. 云存储服务2. 内部存储设…

人话学Python-基础篇-字符串

一&#xff1a;字符串的定义 在Python中使用引号来定义。不论是单引号还是双引号。 str1 Hello World str2 "Hello World" 二&#xff1a;字符串的访问 如果我们要取出字符串中单独的字符&#xff0c;需要使用方括号来表示取得的位置。如果要取出字符串的子串&…

OmniParse:AI+PDF工具与知识库的开源革新

在AI技术的推动下,非结构化数据的解析与结构化已成为提升数据处理效率的关键。OmniParse,一个开源框架,为开发者和企业提供了强大的数据预处理能力,尤其适合用于构建AI+PDF工具和知识库产品。 一、核心功能:全能数据解析 数据解析与结构化:OmniParse能够处理文档、表格…

一元线性回归代码

一元线性回归代码 %% 代码说明 % 该程序为一元线性回归的实现&#xff0c;仅供学习参考&#xff0c;切勿抄袭 % 输入&#xff1a; % X&#xff1a;为第一个变量的已知值&#xff0c;是一个列向量 % Y&#xff1a;为第二个变量的已知值&#xff0c;是一个列向量 % …

原创作品—数据可视化大屏

设计数据可视化大屏时&#xff0c;用户体验方面需注重以下几点&#xff1a;首先&#xff0c;确保大屏信息层次分明&#xff0c;主要数据突出显示&#xff0c;次要信息适当弱化&#xff0c;帮助用户快速捕捉关键信息。其次&#xff0c;设计应直观易懂&#xff0c;避免复杂难懂的…

53-3 内网代理5 - frp搭建二级代理

前提:53-2 内网代理4 - frp搭建socks一级代理-CSDN博客 扩展知识: VPN代表虚拟专用网络(Virtual Private Network)。这是一种通过公共网络(如互联网)在私人网络之间建立安全连接的技术。VPN允许用户通过加密和其他安全性手段,安全地访问远程资源或传输数据,就像直接连…

前端javascript中的排序算法之冒泡排序

冒泡排序&#xff08;Bubble Sort&#xff09;基本思想&#xff1a; 经过多次迭代&#xff0c;通过相邻元素之间的比较与交换&#xff0c;使值较小的元素逐步从后面移到前面&#xff0c;值较大的元素从前面移到后面。 大数据往上冒泡&#xff0c;小数据往下沉&#xff0c;也就是…

Contest3630 - 2024小学期程序设计实训竞-赛-班专题训练四(动态规划专题)

问题A&#xff1a;不能整除 题目描述 给你一个长度为 N N N的整数序列 a i a_i ai​,找出满足下列条件的 i ( 1 ≤ i ≤ N ) i(1\leq i \leq N) i(1≤i≤N)的个数&#xff1a; 对于每个 j j j并且 1 ≤ j ≤ N , i ≠ j 1\leq j \leq N, i \neq j 1≤j≤N,ij&#xff0c; a …

构建工具和自动化:Maven、Gradle及CI/CD实践

引言 在现代软件开发过程中&#xff0c;自动化构建和持续集成/持续部署&#xff08;CI/CD&#xff09;是提高开发效率、保证代码质量的重要实践。构建工具如Maven和Gradle&#xff0c;因其强大的依赖管理和自动化构建功能&#xff0c;已成为Java开发中不可或缺的一部分。本文将…

大语言模型垂直化训练技术与应用

在人工智能领域&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已经成为推动技术进步的关键力量&#xff0c;垂直化训练技术逐渐成为研究的热点&#xff0c;它使得大模型能够更精准地服务于特定行业和应用场景。本文结合达观数据的分享&#xff0c…

tomcat 项目迁移,无法将项目作为服务service启动

背景 测试服务器需要迁移到正式服务器上&#xff0c;为了方便省事&#xff0c;将测试服务器上的一些文件直接复制到正式服务器 问题 使用startup启动项目之后&#xff0c;可以直接使用使用tomcat9w启动&#xff0c;或者作为服务service启动的时候&#xff0c;显示无法访问到资源…

AGE Cypher 查询格式

使用 ag_catalog 中的名为 cypher 的函数构建 Cypher 查询&#xff0c;该函数返回 Postgres 的记录集合。 Cypher() Cypher() 函数执行作为参数传递的 Cypher 查询。 语法&#xff1a;cypher(graph_name, query_string, parameters) 返回&#xff1a; A SETOF records 参…

自动驾驶事故频发,安全痛点在哪里?

大数据产业创新服务媒体 ——聚焦数据 改变商业 近日&#xff0c;武汉城市留言板上出现了多条关于萝卜快跑的投诉&#xff0c;多名市民反映萝卜快跑出现无故停在马路中间、高架上占最左道低速行驶、转弯卡着不动等情况&#xff0c;导致早晚高峰时段出现拥堵。萝卜快跑是百度 A…

北方法学期刊

《北方法学》杂志是经国家新闻出版总署批准&#xff0c;面向国内外公开出版发行的专业法学学术期刊&#xff0c;双月刊&#xff0c;逢单月1&#xff15;日出版。国家新闻出版总署批复《北方法学》的办刊宗旨为&#xff1a;“繁荣法学研究&#xff0c;服务法制建设&#xff0c;加…

YOLOv5、v7、v8如何修改检测框文字颜色和大小

YOLOv5和YOLOv8默认的标签文字颜色为白色&#xff0c;但是在亮度较大的图片中文字不明显&#xff0c;就需要对标签文字的颜色进行修改 一、YOLOv5 打开X:\Anaconda\envs\your-env\Lib\site-packages\ultralytics\utils\plotting.py X代表你的anaconda安装的盘&#xff0c;yo…

随笔(一)

1.即时通信软件原理&#xff08;发展&#xff09; 即时通信软件实现原理_即时通讯原理-CSDN博客 笔记&#xff1a; 2.泛洪算法&#xff1a; 算法介绍 | 泛洪算法&#xff08;Flood fill Algorithm&#xff09;-CSDN博客 漫水填充算法实现最常见有四邻域像素填充法&#xf…

最全windows提权总结(建议收藏)

当以低权用户进去一个陌生的windows机器后&#xff0c;无论是提权还是后续做什么&#xff0c;第一步肯定要尽可能的搜集信息。知己知彼&#xff0c;才百战不殆。 常规信息搜集 systeminfo 查询系统信息hostname 主机名net user 查看用户信息netstat -ano|find "3389&quo…

leetcode 405周赛 最小代价构造字符串「动态规划」

3213. 最小代价构造字符串 题目描述&#xff1a; 给你一个目标字符串 target&#xff0c;一个字符串数组 words&#xff0c;以及一个对应的花费数组costs&#xff0c;每个word对应一个cost 你可以从words数组中选择任意数量的任意字符串&#xff0c;拼接起来&#xff0c;求拼…

【6-1:全链路压测】

全链路压测 1. 背景QPS等概念最佳线程数1.1 什么是全链路压测?1.2 全链路压测解决了什么问题?1.3 全链路压测创造了什么价值?1.4 与传统方式的对比1.5 如何展开全链路压测业务模型梳理数据模型构建压测工具选型2. 全链路整体架构2.1 核心技术2.2 涉及的业务问题2.3 框架实现…

论文 | Chain-of-Thought Prompting Elicits Reasoningin Large Language Models 思维链

这篇论文研究了如何通过生成一系列中间推理步骤&#xff08;即思维链&#xff09;来显著提高大型语言模型进行复杂推理的能力。论文展示了一种简单的方法&#xff0c;称为思维链提示&#xff0c;通过在提示中提供几个思维链示例来自然地激发这种推理能力。 主要发现&#xff1…