PEP 8 – Python 代码风格指南中文版(四)
何时使用尾随逗号
尾随逗号通常是可选的,但在创建一个只有一个元素的元组时是必须的。为了清晰起见,建议使用(技术上多余的)括号将其包围起来:
# 正确的:
FILES = ('setup.cfg',)# 错误的:
FILES = 'setup.cfg',
当尾随逗号是多余的时候,在使用版本控制系统时,或者当预期值列表、参数或导入项会随着时间的推移而扩展时,它们通常很有帮助。这种模式的做法是将每个值(等)放在一行上,并始终添加一个尾随逗号,然后在下一行添加闭合的括号/方括号/花括号。但是,在闭合分隔符所在行添加尾随逗号是没有意义的(除了上面提到的单元素元组的情况):
# 正确的:
FILES = ['setup.cfg','tox.ini',]initialize(FILES,error=True,)# 错误的:
FILES = ['setup.cfg', 'tox.ini',]initialize(FILES, error=True,)
注释
与代码相矛盾的注释比没有注释更糟糕。当代码发生变化时,务必优先更新注释!
注释应该是完整的句子。第一个单词应该大写,除非它是一个以小写字母开头的标识符(永远不要更改标识符的大小写!)
块注释通常由一个或多个由完整句子组成的段落组成,每个句子以句号结尾。
在多句注释中,除了最后一句之外,每句句末的句号后应使用一个或两个空格。
请确保您的注释清晰易懂,以便其他使用您所用语言的人能够理解。
来自非英语国家的Python程序员:请用英语编写注释,除非您100%确定代码绝不会被不懂您母语的人阅读。
块注释
块注释通常适用于它们之后的一些(或全部)代码,并且与这些代码的缩进级别相同。块注释的每一行都以一个#和一个空格开始(除非它是注释内部的缩进文本)。块注释内部的段落由包含单个#的行分隔。
行内注释
谨慎使用行内注释。
行内注释是与语句位于同一行的注释。行内注释应与语句之间至少有两个空格的分隔。它们应该以#和一个空格开头。
如果行内注释陈述的是显而易见的内容,那么它们是不必要的,并且实际上会分散注意力。不要这样做:
x = x + 1 # Increment x
但是有时候,这样做是有用的:
x = x + 1 # Compensate for border
文档字符串
编写良好文档字符串(也称为“docstrings”)的约定在PEP 257中得到了永恒的传承。
- 为所有公共模块、函数、类和方法编写文档字符串。对于非公共方法,文档字符串不是必需的,但你应该有一个注释来描述该方法的作用。这个注释应该出现在def语句之后。
- PEP 257描述了良好的文档字符串约定。请注意,最重要的是,结束多行文档字符串的三个双引号(""")应该独占一行:
"""Return a foobangOptional plotz says to frobnicate the bizbaz first.
"""
- 对于单行文档字符串,请将结束的三个双引号(""")保持在同一行:
"""Return an ex-parrot."""
命名约定
Python库的命名约定有点混乱,因此我们无法完全保持一致——尽管如此,以下是当前推荐的命名标准。新的模块和包(包括第三方框架)应该按照这些标准编写,但如果现有库采用了不同的风格,则内部一致性是首选。
首要原则
作为API的公共部分对用户可见的名称应遵循反映用法而非实现的约定。
描述性:命名风格
存在许多不同的命名风格。能够独立于它们的用途来识别所使用的命名风格是有帮助的。
以下命名风格通常有所区别:
- b(单个小写字母)
- B(单个大写字母)
- lowercase(全部小写)
- lower_case_with_underscores(小写字母和下划线)
- UPPERCASE(全部大写)
- UPPER_CASE_WITH_UNDERSCORES(大写字母和下划线)
- CapitalizedWords(大驼峰,或CapWords,或CamelCase——因其字母看起来有起伏而得名[4])。有时也被称为StudlyCaps。
注意:在使用CapWords中的缩写时,请将缩写的所有字母都大写。因此,HTTPServerError比HttpServerError更好。
- mixedCase(小驼峰,与CapitalizedWords不同,首字母小写!)
- Capitalized_Words_With_Underscores(丑陋!)
还有一种风格是使用简短的唯一前缀来将相关名称组合在一起。在Python中,这种风格使用得不多,但出于完整性考虑,这里还是提一下。例如,os.stat()函数返回一个元组,其项目传统上具有如st_mode、st_size、st_mtime等名称。(这样做是为了强调与POSIX系统调用结构中的字段的对应关系,这对熟悉该结构的程序员有所帮助。)
X11库使用前导X来命名其所有公共函数。在Python中,这种风格通常被认为是不必要的,因为属性和方法名称都以对象作为前缀,而函数名称则以模块名称作为前缀。
此外,还识别以下使用前导或尾随下划线的特殊形式(这些通常可以与任何大小写约定结合使用):
- _single_leading_underscore(单个前导下划线):表示“内部使用”的弱指示符。例如,from M import * 不会导入名称以下划线开头的对象。
- single_trailing_underscore_(单个尾随下划线):按照惯例,用于避免与Python关键字冲突,例如:
tkinter.Toplevel(master, class_='ClassName')
- __double_leading_underscore(双前导下划线):在命名类属性时,会触发名称改编(在类FooBar内部,__boo会变成_FooBar__boo;见下文)。
- __double_leading_and_trailing_underscore__(双前导和双尾随下划线):“魔法”对象或属性,存在于用户控制的命名空间中。例如,__init__、__import__或__file__。永远不要自己发明这样的名称;只应按文档说明使用它们。
往期文章:
PEP 8 – Python 代码风格指南中文版(一)
PEP 8 – Python 代码风格指南中文版(二)
PEP 8 – Python 代码风格指南中文版(三)
相关文章:
PEP 8 – Python 代码风格指南中文版(四)
何时使用尾随逗号 尾随逗号通常是可选的,但在创建一个只有一个元素的元组时是必须的。为了清晰起见,建议使用(技术上多余的)括号将其包围起来: # 正确的: FILES (setup.cfg,)# 错误的: FILES setup.cfg, 当尾随逗号…...
基于深度学习的适应硬件的神经网络
基于深度学习的适应硬件的神经网络设计旨在最大限度地利用特定硬件平台的计算和存储能力,提高模型的执行效率和性能。这些硬件包括图形处理单元(GPU)、张量处理单元(TPU)、现场可编程门阵列(FPGA࿰…...
上传音频文件
思路 1、自定义Upload 重点:<input ref{inputRef} type"file" accept{accept} onClick{e > e.stopPropagation()} onChange{uploadFile} multiple{multiple}/> 使用input标签设置type是file,将input元素通过forwardRef暴露给父组件&…...
Linux之jdk离线安装
下载地址 一、linux安装jdk8 1、上传,解压 cd /usr/local/java tar -zxvf jdk-10.0.2_linux-x64_bin.tar.gz2、修改配置 vim /etc/profile #在/etc/profile文件后面加上如下配置 export JAVA_HOME/usr/local/java/jdk-10.0.2 export JRE_HOME/usr/local/java/jd…...

JVM结构、架构与生命周期总结
【1】JVM结构 不同厂商的JVM产品 : 厂商JVMOracle-SUNHotspotOracleJRocketIBMJ9 JVM阿里Taobao JVM HotSpot VM是目前市面上高性能虚拟机的代表作之一。它采用解释器与即时编译器并存的架构。 在今天,Java程序的运行性能早已脱胎换骨,已…...
Flink-StarRocks详解:第四部分StarRocks分区管理,数据压缩(第54天)
文章目录 前言2.3.3 管理分区2.3.3.1 增加分区2.3.3.2 删除分区2.3.3.3 恢复分区2.3.3.4 查看分区 2.3.4 设置分桶2.3.4.1 随机分桶(自 v3.1)2.3.4.2 哈希分桶2.3.4.2.1 优点2.3.4.2.2 如何选择分桶键2.3.4.2.3 注意事项 2.3.4.3 确定分桶数量 2.3.5 最佳…...

为什么有时候银行贷款审核会查大数据信用?
在申请银行贷款时,不少人会疑惑为何银行会深入审查申请人的大数据信用信息。这背后,其实是银行风险控制与精准决策的体现。 首先,大数据信用信用能全面反映申请人的信用状况 它不仅仅局限于传统的征信报告,还涵盖了消费行为、社交…...

LoRa无线通讯,让光伏机器人实现无“线”管理
光伏清洁机器人,作为光伏电站运维的新兴关键设备,已跃升为继组件、支架、光伏逆变器之后的第四大核心组件,正逐步成为光伏电站的标准配置。鉴于光伏电站普遍坐落于偏远无人区或地形复杂之地,光伏清洁机器人必须具备远程操控能力、…...

买流量卡要注意什么,这些冷知识你一定要懂!
买流量卡要注意什么?别总盯着价格看,还有一些隐形的冷知识得了解一下,今天这篇文章就是要告诉你一些流量卡中隐藏的冷知识。 一、首先,那些月租9元、19元的流量卡,大概率都是短期卡,虽然他们的资费便宜&a…...

【嵌入式】STM3212864点阵屏使用SimpleGUI单色屏接口库——(2)精简字库
一 开源库简介与移植 最近一个项目需要用12864屏幕呈现一组较为复杂的菜单界面,本着不重复造轮子的原则找到了SimpleGUI开源库。 开源地址:SimpleGUI: 一个面向单色显示屏的开源GUI接口库。 SimpleGUI是一款针对单色显示屏设计的接口库。相比于传统的GUI…...

《计算机网络》(第8版)第1章 概述 复习笔记
第 1 章 概述 一、计算机网络在信息时代中的作用 计算机网络的两个重要功能: 1 .连通性 指互联网上的用户之间是相互连通的。 2 .共享(资源共享) 资源共享可以是信息共享、软件共享,也可以是硬件共享。此…...

银行数据质量保障体系建设实践
引言 在数字化转型浪潮中,数据中台成为企业实现数据驱动决策的关键支撑。它不仅整合了企业内外部的数据资源,还通过数据共享与复用,提升了运营效率和业务创新能力。然而,随着数据量的激增和数据来源的多样化,如何确保…...
笔记小结:《利用Python进行数据分析》二进制数据格式存储与web交互
提示:此节内容仅作了解即可 目录 二进制数据格式 使用HDF5 读取Microsoft Excel文件 二进制数据格式 实现数据的高效二进制格式存储最简单的办法之一是使用Python内置的pickle序列化。 Python 的 pickle 模块是一个用于序列化和反序列化 Python 对象结构的模块…...
电脑桌面图标变白了?3个方法20秒钟轻松解
电脑桌面图标变白了?3个方法20秒钟轻松解 ⚠️电脑桌面图标变白了,3种方法轻松解决 🚸方法一和方法二属于治标不治本的解决方法,但操作较为简单,在不同情况下有不成功的可能,方法三相对复杂一些,…...
数据治理,管什么?
元数据(Metadata):通俗地说就是描述数据的数据,比如数据的名称、属性、分类、字段信息、大小、标签等等。要做好数据的管理,元数据起到了举足轻重的作用。 参考数据(Reference Data)࿱…...
【前端】JavaScript入门及实战121-125
文章目录 121 滚轮事件122 键盘事件123 键盘移动div124 BOM125 History 121 滚轮事件 <!DOCTYPE html> <html> <head> <title></title> <meta charset "utf-8"> <style type"text/css">#box1 {width: 100px;h…...

pytest测试框架之http协议接口测试
1 接口测试 日常测试中接口测试是一项重要的工作,尤其是http协议的接口测试更加普遍,比如一些常用的测试框架或者工具(robotframework框架,testng框架,postman等)都支持http接口的测试,而这节内容主要介绍…...

FFmpeg源码:av_gcd函数分析
一、引言 公约数,是一个能同时整除几个整数的数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。对任意的若干个正整数,1总是它们的公约数。 公约数与公倍数相反,就…...

springboot物流寄查系统-计算机毕业设计源码95192
目 录 1 绪论 1.1 研究背景 1.2选题背景 1.3论文结构与章节安排 2 springboot物流寄查系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2…...

【秋招笔试】24-07-27-OPPO-秋招笔试题(算法岗)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 💡 第一题贪心模拟…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...