Python 中使用的不同命名风格包括以下几种。

• 驼峰式命名法(CamelCase)。

• 混合式命名法(mixedCase)。

• 大写(UPPERCASE)或大写加下划线(UPPER_CASE_WITH_UNDERSCORES)。

• 前缀(leading ) 和后缀 ( trailing)下划线,有时是双下划线(doubled)。

小写元素和大写元素通常是一个单词,有时是几个单词连在一起。使用下划线的通常
是缩写短语。使用一个单词要更好一些。前缀和后缀下划线用于标记私有元素和特殊元素。

这些风格被应用到以下几种情形。 

  • 变量。
  • 函数和方法。
  • property。
  • 类。
  • 模块。
  • 包。

一、变量

Python 中有两种变量:

• 常量。

• 公有和私有变量。

1.常量

  对于常量全局变量,使用大写加下划线。它告诉开发人员,指定的变量表示一个常数值。

      Python 中没有像 C++中那样真正的常量—在 C++中 可以使用 const。你可以修改任何变量的值。这就是 Python 使用命名约定将一个变量标记为常量的原因。

  举个例子,doctest 模块提供了一系列选项标记和指令(https://docs.python.org/3.5/ library/doctest.html#option-flags),它们都是短小的句子,清晰地定义了每个选项的用途:

from doctest import IGNORE_EXCEPTION_DETAIL

from doctest import REPORT_ONLY_FIRST_FAILURE 

  这些变量名称看起相当长,但清晰地描述它们也很重要。它们主要在初始化代码中使 用,而不在代码主体中使用,所以这种冗长的名称并不会令人厌烦。

      大部分情况下,缩写名称都会使代码含义变得模糊。如 果缩写不够清晰,不要害怕使用完整的单词。

  有些常量的名称也是由底层技术驱动的。例如,os 模块使用 C 中定义的一些常量,例 如 EX_XXX 系列定义了 Unix 退出代码编号。例如,同样的名称代码可以在系统的 C 头文

件 sysexits.h 中找到,如下所示:

import os 
import sys

sys.exit(os.EX_SOFTWARE)

  使用常量的另一个好的做法是,将它们集中放在使用它们的模块顶部,如果它们要用 于下列操作,那么就将其组合在新的变量中:

import doctest 
TEST_OPTIONS = (doctest.ELLIPSIS | 
          doctest.NORMALIZE_WHITESPACE |
          doctest.REPORT_ONLY_FIRST_FAILURE)

2、命名和使用

常量用来定义程序所依赖的一组值,例如默认配置文件名。
好的做法是将所有常量集中放在包中的一个文件内。举个例子,Django 采用的就是这 种方法。一个名为 settings.py 的模块提供所有常量,如下所示: 

   # config.py 
   SQL_USER = 'tarek' 
   SQL_PASSWORD = 'secret' 
   SQL_URI = 'postgres://%s:%s@localhost/db' % ( 
SQL_USER, SQL_PASSWORD 
   ) 
   MAX_THREADS = 4 
另一种方法是使用可以被 ConfigParser 模块或类似 ZConfig(Zope 中用于描述其 配置文件的解析器)之类的高级工具解析的配置文件。但有些人认为,对于 Python 这种文 件能够像文本文件一样轻松编辑和修改的语言来说,使用另一种文件格式可能是过分之举。
对于表现得像标记的选项,通常的做法是将它们和布尔运算结合起来,就像 doctest 和 re 模块所做的那样。doctest 中的模式很简单,如下所示: 
   OPTIONS = {} 


   def register_option(name): 
return OPTIONS.setdefault(name, 1 << len(OPTIONS)) 

   def has_option(options, name): return bool(options & name) 

   # 现在定义选项BLUE = register_option('BLUE')
RED = register_option('RED')
WHITE = register_option('WHITE')
你将会得到下列结果:
>>> # 我们来尝试一下
>>> SET = BLUE | RED
>>> has_option(SET, BLUE) True
>>> has_option(SET, WHITE) False
在创建这样一组新的常量时,应避免对它们使用共同的前缀,除非模块中有多组常量。 模块名称本身就是一个共同的前缀。另一种解决方法是使用内置 enum 模块的 Enum 类,
并且依赖于 set 集合类型而不是二进制运算符。不幸的是,Enum 类在面向旧 Python 版本 的代码中应用有限,因为 enum 模块由 Python 3.4 版提供。
在 Python 中,使用二进制按位运算来合并选项是很常 见的。使用 OR(|)运算符可以将多个选项合并到一 个整数中,而使用 AND(&)运算符则可以检查该选 项是否在整数中(参见 has_option 函数)。