# 代码规范 参考链接: [谷歌的python代码规范](https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/) ### 格式 1. 不要在行尾加分号,也不要用分号将两条命令放在同一行. 1. 顶级定义之间空两行, 方法定义之间空一行,严格按照IDE的提示 1. 每个导入应该独占一行 1. 通常每个语句应该独占一行 ### 命名 不可使用: 1. 单字符名称, 除了计数器和迭代器. 1. 包/模块名中的连字符(-) 1. 双下划线开头并结尾的名称(Python保留, 例如__init__) 命名约定 1. 所谓”内部(Internal)”表示仅模块内可用, 或者, 在类内是保护或私有的. 1. 用单下划线(_)开头表示模块变量或函数是protected的(使用from module import *时不会包含). 1. 用双下划线(__)开头的实例变量或方法表示类内私有. 1. 将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块. 1. 字典变量以 dic 结尾 1. 数组亦是以 arr 结尾 1. 对类名使用大写字母开头的单词(如CapWords, 即Pascal风格), 但是模块名应该用小写加下划线的方式(如lower_with_under.py). 尽管已经有很多现存的模块使用类似于CapWords.py这样的命名, 但现在已经不鼓励这样做, 因为如果模块名碰巧和类名一致, 这会让人困扰. 全名举例 | Type | Public | Private | | --- | --- | --- | | 模块名 | lower_with_under | _lower_with_under | | 包名 | lower_with_under | | | 类名 | CapWords | _CapWords | | 枚举类 | CAPS_WITH_UNDER | _CAPS_WITH_UNDER | | 异常 | CapWords | _CapWords | | 函数 | lower_with_under() | _lower_with_under() | | 全局常量 | CAPS_WITH_UNDER | _CAPS_WITH_UNDER | | 类常量 | CAPS_WITH_UNDER | _CAPS_WITH_UNDER | | 全局变量 | lower_with_under | _lower_with_under | | 类变量 | lower_with_under | _lower_with_under | | 实例变量 | lower_with_under | _lower_with_under (protected) or __lower_with_under (private) | | 方法名 | lower_with_under() | _lower_with_under() (protected) or __lower_with_under() (private) | | 参数名 | lower_with_under | | | 局部变量 | lower_with_under | | ### 类 1. 如果一个类不继承自其它类, 就显式的从object继承. 嵌套类也一样. 2. 类应该在其定义下有一个用于描述该类的文档字符串. 如果你的类有公共属性(Attributes), 那么文档中应该有一个属性(Attributes)段. 并且应该遵守和函数参数相同的格式. ``` class SampleClass(object): """Summary of class here. Longer class information.... Longer class information.... Attributes: likes_spam: A boolean indicating if we like SPAM or not. eggs: An integer count of the eggs we have laid. """ def __init__(self, likes_spam=False): """Inits SampleClass with blah.""" self.likes_spam = likes_spam self.eggs = 0 def public_method(self): """Performs operation blah.""" ``` ### 类成员函数约定 1. 使用构造函数来进行构造,传入所有可能需要的参数 2. 文件操作类初始化,定义read函数来读取,write函数来写入 ### 文件操作 必须使用"with"语句来管理文件 ### 访问控制 在Python中, 对于琐碎又不太重要的访问函数, 你应该直接使用公有变量来取代它们