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

[Python 基础课程]Python 规范

先了解下,后面会一直强调 Python 编程的规范。

代码布局 (Code Layout)

缩进 (Indentation): 使用 4 个空格进行缩进。不要混合使用制表符和空格。
行宽 (Maximum Line Length): 每行代码的长度应限制在 79 个字符以内。对于较长的注释或文档字符串,可以放宽到 72 个字符。
空行 (Blank Lines):

  • 顶层函数和类定义之间空两行。
  • 类的方法定义之间空一行。
  • 在函数内部,可以使用空行来分隔逻辑相关的代码块,以提高可读性。

模块导入 (Imports):

  • 每个导入通常应该独占一行。
  • 导入应该按照以下顺序分组,并在每组之间留一个空行:标准库导入 (e.g., import os),第三方库导入 (e.g., import requests),本地应用程序/库的导入 (e.g., from my_package import my_module)。
  • 避免使用 from import *,因为它会使命名空间混乱。

命名约定 (Naming Conventions)

变量名 (Variable Names): 使用 小写字母,单词之间用下划线分隔 (snake_case)。例如:user_name, total_count.

函数名 (Function Names): 使用 小写字母,单词之间用下划线分隔 (snake_case)。例如:calculate_average(), get_user_data().

类名 (Class Names): 使用 驼峰命名法 (CamelCase),每个单词的首字母大写。例如:UserProfile, DataProcessor.

模块名和包名 (Module and Package Names): 使用 小写字母,单词之间用下划线分隔 (snake_case)。例如:my_module.py, data_utils/.

常量 (Constants): 使用 大写字母,单词之间用下划线分隔 (UPPER_CASE)。例如:MAX_USERS, DEFAULT_TIMEOUT.

受保护的成员 (Protected Members): 类中以单下划线开头的成员 (例如 _internal_variable, _internal_method) 应该被视为内部实现细节,不建议在类外部直接访问。

私有成员 (Private Members): 类中以双下划线开头的成员 (例如 __private_variable, __private_method) 会触发名称改写 (name mangling),使其更难在类外部直接访问。这是一种更强的私有性约定。

表达式和语句 (Expressions and Statements)

空格 (Whitespace in Expressions):

  • 在二元运算符两边各加一个空格:i = i + 1, x < y
  • 在逗号、分号后面加一个空格:[1, 2, 3], function(a, b)
  • 在函数调用的参数列表中,逗号后面加空格
  • 不要在括号 (圆括号、方括号、花括号) 内部的旁边直接加空格:spam(ham[1], {eggs: 2}) (不是 spam( ham[ 1 ], { eggs: 2 } )).
  • 不要在尾部的逗号后面加空格。

行尾注释 (Trailing Commas): 在多行结构(如列表、元组、字典的定义)的最后一个元素后面添加一个逗号是允许的,有时甚至推荐,因为它使得添加或删除元素更加方便,并且可以减少版本控制系统中的差异。
语句块 (Statements): 每个语句通常应该独占一行。

注释 (Comments)

行内注释 (Inline Comments): 指与代码语句位于同一行的注释,通常用于解释单行代码的用途或逻辑。它们以 <font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">#</font> 符号开头,其后的内容会被 Python 解释器忽略。

x = x + 1  # 计数器自增

文档字符串 (Docstrings - PEP 257):

  • 所有公共模块、类、函数和方法都应该编写文档字符串。
  • 文档字符串应该清晰地描述对象的功能、参数、返回值、可能引发的异常等。
  • 单行文档字符串应该简洁地总结对象的作用。
  • 多行文档字符串应该以一个总结行开始,空一行后跟更详细的描述。
def quadratic(a, b, c):"""解二次方程 ax² + bx + c = 0参数:a (float): x²系数b (float): x系数c (float): 常数项返回:tuple: 实数解的元组 (若无解返回空元组)"""discriminant = b**2 - 4*a*c# ...计算逻辑...

相关文章:

  • 【QT】信号和槽(1) 使用 || 定义
  • 信号处理分析工具——时频分析(二)
  • python sklearn 机器学习(1)
  • 【C++】C++的虚析构函数
  • Linux基本命令篇 —— head命令
  • 什么是P2P 网络(Peer-to-Peer Network)
  • linux运维学习第10周
  • FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南
  • 命令模式 - Flutter中的操作封装大师,把“动作“变成可管理的对象!
  • 数据同步工具对比:Canal、DataX与Flink CDC
  • stm32hal模块驱动(2)bmi270气压计
  • 数据结构之单链表
  • 爬虫实战之图片及人物信息爬取
  • 华为云Flexus+DeepSeek征文 | 华为云 ModelArts Studio 赋能 AI 法务:合同审查与法律文件生成系统
  • 【硬核数学】4. AI的“寻路”艺术:优化理论如何找到模型的最优解《从零构建机器学习、深度学习到LLM的数学认知》
  • Leetcode 3598. Longest Common Prefix Between Adjacent Strings After Removals
  • 滑块验证码(1)
  • 【blender】使用bpy对一个obj的不同mesh进行不同的材质贴图(涉及对bmesh的操作)
  • ViTMatte:利用预训练的基础视觉Transformer提升图像抠图性能
  • 云计算在布莱克-斯科尔斯模型中的应用:解析解、蒙特卡洛模拟与可视化-AI云计算数值分析和代码验证