深圳网站建设外贸公司价格,建设工程施工合同管辖,网站服务器地址查询方法,wordpress站点标题副标题换行本规范旨在为 Python 项目的代码编写提供一致性指南。它遵循 Python 社区的 PEP 8 标准#xff0c;并结合了通用的编程最佳实践。 1. 编码风格
1.1 缩进
使用 4 个空格 作为缩进#xff0c;不要使用制表符#xff08;Tab#xff09;。
def example():if True:print(并结合了通用的编程最佳实践。 1. 编码风格
1.1 缩进
使用 4 个空格 作为缩进不要使用制表符Tab。
def example():if True:print(Use 4 spaces for indentation.)
1.2 行宽 每行代码不应超过 79 个字符对于文档字符串或注释行宽不超过 72 个字符。如果代码行太长可以使用显式换行符 \ 或利用小括号、方括号等自然换行。
# 长行的示例
def function_with_long_arguments(arg1, arg2, arg3, arg4, arg5):pass1.3 空行 在顶级定义如函数、类之间留出两个空行。 在方法定义和类定义内部的函数之间留出一个空行。
class MyClass:def method_one(self):passdef method_two(self):pass1.4 空格的使用
函数调用时不要在括号内添加空格
print(Hello) # 正确
print( Hello ) # 错误避免在以下情况中使用多余的空格列表、字典等容器的括号内不使用空格
my_list [1, 2, 3] # 正确
my_list [ 1, 2, 3 ] # 错误2. 命名规范naming conventions
2.1 变量、函数与方法
使用 snake_case 命名即小写字母加下划线分隔单词。
def calculate_total():total_value 0return total_value2.2 类名
使用 CamelCase 命名法即每个单词首字母大写。
class EmployeeManager:pass2.3 常量
常量使用全大写字母单词之间用下划线underscores分隔。
MAX_SIZE 1002.4 私有属性与方法
私有属性或方法使用前导单下划线 _ 来表示不强制限制但表示不应从外部访问。
class MyClass:def _private_method(self):pass2.5 包名
全小写字母包名通常应使用小写字母不使用大写字母。可以使用下划线_来分隔单词但更推荐直接使用小写字母连接。
示例: mypackage 或 my_package
公司或项目前缀可选对于公司内部项目包名可以包含公司或项目的前缀保证包的唯一性避免内部冲突。
示例: company_projectname
2.6. 特殊方法魔术方法
特殊方法也叫魔术方法是 Python 类中内置(built-in)的、以双下划线开头和结尾的方法。这些方法有特定的行为和用途比如 __init__、__str__、__repr__ 等。不要为普通方法使用双下划线这种命名方式应只用于 Python 内部功能。
class MyClass:def __init__(self, value):self.value valuedef __str__(self):return str(self.value)3. 注释与文档
3.1 行内注释
行内注释应与代码对齐并与代码留有至少两个空格的间距。
x x 1 # 增加计数3.2 块注释
使用块注释为代码片段提供详细的说明每行应以 # 开头并与代码对齐。 # 计算总值
# 如果项目为空返回0
def calculate_total():pass3.3 文档字符串Docstring 为每个模块、类和函数编写文档字符串说明其功能、参数、返回值等。使用三引号 进行定义。 def add(a, b):Adds two numbers together.:param a: The first number.:param b: The second number.:return: The sum of a and b.return a b4. 代码结构
4.1 导入顺序 导入应按以下顺序排列且每类导入之间用一个空行分隔 标准库导入第三方库导入本地模块导入import os
import sysimport requestsfrom mymodule import MyClass4.2 避免循环导入
避免模块之间的循环导入。如果遇到循环导入问题可以将导入语句移到函数或方法内部确保在需要时才进行导入。
5. 异常处理
5.1 捕获特定异常
避免使用裸 except应尽量捕获特定的异常类型。 try:result 10 / 0
except ZeroDivisionError:print(Cannot divide by zero.)5.2 使用 finally 如果代码块中有需要无论是否抛出异常都要执行的操作应使用 finally。 try:file open(file.txt)
finally:file.close()6. 测试
6.1 编写单元测试
使用 unittest 或 pytest 编写单元测试。确保每个函数和模块都有相应的测试覆盖。
6.2 保持测试的独立性
测试用例应保持相互独立不依赖其他测试的执行结果。
6.3 测试命名 测试函数应以 test_ 开头便于测试框架自动识别。 def test_add():assert add(2, 3) 5