命名

应该避免的名称

以下命名应该尽量避免

  • 单字符名称, 除了计数器和迭代器.
if __name__ == '__main__':
    # 不推荐的写法
    # 尽量避免单字符变量名
    s = "hello world!"
  • 包/模块名中的连字符(-)
# 错误的包名
# 引用文件 html-parser.py
import html-parser

# 正确的写法
# 文件名应为 html_parser.py
import html_parser
  • 双下划线开头并结尾的名称(Python保留, 例如__init__)
  • 应避免使用小写字母l(L),大写字母O(o)或I(i)单独作为一个变量的名称,以区分数字1和0
if __name__ == '__main__':
    # 不推荐的写法
    # 尽量避免l、O 等容易混淆的字母
    l = 1
    O = 0
    l = (O + 1)*l
  • 当参数名称和Python保留字冲突,可在最后添加一个下划线,而不是使用缩写或自造的词
# 如果变量名和python保留字冲突,则在末尾添加下划线
# 切记不要自己造词,或者使用缩写
def print_():
    ... ...

if __name__ == '__main__':
    str_ = "hello world!"
    print_(str_)

命名约定

模块

  • 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)
# 正确的模块名
import decoder
import html_parser

# 不推荐的模块名
import Decoder

类名

  • 类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头
class Farm():
    pass

class AnimalFarm(Farm):
    pass

class _PrivateFarm(Farm):
    pass
  • 将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块.

函数

  • 函数名一律小写,如有多个单词,用下划线隔开
def run():
    pass

def run_with_env():
    pass
  • 私有函数在函数前加一个下划线_
class Person():

    def _private_func():
        pass

变量名

  • 变量名尽量小写, 如有多个单词,用下划线隔开
if __name__ == '__main__':
    count = 0
    school_name = ''
  • 常量采用全大写,如有多个单词,使用下划线隔开
MAX_CLIENT = 100
MAX_CONNECTION = 1000
CONNECTION_TIMEOUT = 600