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

由浅入深谈Python书写规范

1. 基本缩进规则

  • 使用 4个空格 作为一级缩进(推荐)
  • 避免混合使用空格和制表符(Tab)
  • 续行缩进应该与包裹元素对齐或使用悬挂缩进
# 正确示例
def function_name(parameter_one, parameter_two,parameter_three):print("Hello World")# 悬挂缩进示例
result = some_function('first_arg', 'second_arg','third_arg')

2. 最大行长度

  • 每行不超过 79个字符(PEP 8推荐)
  • 对于文档字符串或注释不超过 72个字符

3. 空行使用

  • 顶层函数和类定义之间用 两个空行
  • 类内方法定义之间用 一个空行
  • 函数内逻辑段落之间可适当使用空行分隔
class MyClass:def method_one(self):passdef method_two(self):passdef top_level_function():pass

4. 导入(import)格式

  • 每个导入通常独占一行
  • 导入顺序:标准库 → 第三方库 → 本地应用/库
  • 每组导入之间用空行分隔
import os
import sysfrom datetime import datetime, timedeltaimport numpy as np
import pandas as pdfrom my_module import MyClass

5. 表达式和语句中的空格

  • 二元运算符两侧各加一个空格
  • 函数参数列表中,逗号后加空格
  • 不要紧贴括号、方括号或大括号内部加空格
# 正确
x = a + b
result = func(a, b)
lst = [1, 2, 3]# 错误
x=a+b
result = func(a,b)
lst = [ 1, 2, 3 ]

6. 注释格式

  • 行内注释:至少与语句间隔2个空格,#号后加1个空格
  • 块注释:每行以#号开头,后跟1个空格
  • 文档字符串:使用三重引号
# 这是一个块注释
# 描述下面的代码功能x = x + 1  # 这是一个行内注释def my_function():"""这是一个文档字符串这里可以详细描述函数的功能、参数和返回值。"""pass

7. 命名约定

  • 变量和函数名:lowercase_with_underscores(小写+下划线)
  • 类名:CapitalizedWords(驼峰式)
  • 常量名:ALL_CAPS(全大写)
  • 私有变量/方法:_single_leading_underscore(单下划线开头)

8. 字符串引号

  • 普通字符串使用单引号 '...'
  • 字符串中包含单引号时使用双引号 "..."
  • 多行字符串使用三重双引号 """..."""
name = 'John'
message = "Don't worry"
docstring = """这是一个
多行字符串"""

9. 书写注意事项

  • 避免使用分号;将多条语句放在一行
  • 比较操作时,None应该用isis not,而不是==
  • 使用if x is not None而不是if not x is None

10. 函数定义规范

  • 函数参数排列顺序:位置参数 → 默认参数 → 可变参数 → 关键字参数
  • 函数定义与调用时保持参数对齐
# 正确示例
def request(method, url, params=None, data=None, headers=None, **kwargs):"""发送HTTP请求"""pass# 调用时保持对齐
response = request('GET','https://example.com',params={'key': 'value'},headers={'Content-Type': 'application/json'}
)

11. 类定义规范

  • 类方法第一个参数必须是self
  • 类方法之间用空行分隔
  • 继承类列表中的基类应该按从最抽象到最具体的顺序排列
class Animal:passclass Dog(Animal):def __init__
http://www.xdnf.cn/news/332011.html

相关文章:

  • 【MySQL】-- 联合查询
  • Linux:进程控制1
  • 如何利用 QuickAPI 生成 PostgreSQL 样本测试数据:全面解析与实用指南
  • vue-qr生成的二维码增加下载功能
  • 【云备份】客户端开发
  • 百胜企业管理咨询:助力企业快速获得ecovadis认证
  • SecureCRT SFTP命令详解与实战
  • S32K3 HSE模块安装
  • 屏蔽力 | 在复杂世界中从内耗到成长的转变之道
  • STM32开发printf函数支持
  • LeetCode:二叉树的最大深度
  • React Native主题切换、字号调整:不用styled-components也能玩出花
  • 查询nvidia边缘设备的软硬件版本jetson_release
  • 【软件设计师:程序语言】4.程序语言基础知识
  • Unity-Socket通信实例详解
  • 【面试 · 二】JS个别重点整理
  • leetcode hot100 技巧
  • C++函数栈帧详解
  • Ultralytics中的YOLODataset和BaseDataset
  • comfyui 实现中文提示词翻译英文进行图像生成
  • 低成本监控IPC模组概述
  • D盘出现不知名文件
  • int (*)[3]和int (*arr_ptr)[3]区别
  • Spark应用部署模式实例
  • 个人网站versionI正式上线了!Personal Website for Jing Liu
  • ✍️【TS类型体操进阶】挑战类型极限,成为类型魔法师!♂️✨
  • JAVA八股文
  • CI/CD与DevOps流程流程简述(提供思路)
  • 使用pdm管理python项目时去哪里找nuitka
  • 如何通过复盘提升团队能力?