Python是一个极简优雅的语言,大部分初学者,尤其从事数据科学但初学者,在初学Python时,一般会从Python基本语法、基本数据类型学起,但常常会忽略一些基本规则,Python变量命名规则就是其中一个。
当忽略了这些规则时,我们写出来的代码但易读性往往相对较差,更加不便与同行交流学习,更不用说与别人标准但程序集成与统一了。
Python库的命名约定有点混乱,但Python官方还是有做了一些约定,在我们写代码过程中,均遵守了这些约定,在代码可读性、美观性以及实用性都是有益的。
接下来云朵君从下面几个常用的方面总结了一些规则规范,以供参考。

命名样式
只能包含字母、数字和下划线,且不能以数字开头
区分字母大小写
禁止使用保留字(关键字)
>>> # 查看python关键字
>>> import keyword
>>> kw = keyword.kwlist
>>> print(kw)
>>> # 运行结果
['False', 'None', 'True', 'and', 'as',
'yield', 'assert', 'async', 'await', 'break',
'class', 'continue', 'def', 'del','elif',
'else', 'except', 'finally','for', 'from',
'global', 'if', 'import','in', 'is',
'lambda', 'nonlocal', 'not', 'or', 'pass',
'raise', 'return', 'try', 'while', 'with']
通常的命名样式如下[1]
b
(单个小写字母)B
(s单个大写字母)lowercase
(全部小写字母)lower_case_with_underscores
(下划线连接的小写字母)UPPERCASE
(全部大写字母)UPPER_CASE_WITH_UNDERSCORES
(下划线连接的大写字母)CapitalizedWords
(或CapWords或CamelCase。这种命名叫做驼峰式大小写,有时也称为StudlyCaps。注意:在CapWords中使用首字母缩写词时,请使用首字母缩写词的所有字母大写。因此,HTTPServerError比HttpServerError好。)mixedCase
(与大小写字母首字母小写字母不同!)Capitalized_Words_With_Underscores
(下划线连接、首字母大写的写法非常难看)
驼峰式大小写[2]
当变量名和函数名称是由二个或多个单字链接在一起,而构成的唯一识别字时,利用“驼峰式大小写”来表示,可以增加变量和函数的可读性。
单字之间不以空格断开(例:camel case)或连接号(-,例:camel-case)、下划线(_,例:camel_case)链接,有两种格式:
小驼峰式命名法(lower camel case)
第一个单字以小写字母开始;第二个单字的首字母大写,例如:firstName、lastName。
大驼峰式命名法(upper camel case)
每一个单字的首字母都采用大写字母,例如:FirstName、LastName、CamelCase,也被称为Pascal命名法(英语:Pascal Case)
使用前划线或后划线的特殊形式命名惯例
以单一下下划线开头的变量名(_x)不会被
from module import *
语句导入前后有下划线的变量名(__x__)是系统定义的变量名,对python 解释器有特殊意义,例如
__init__
,__ import__
或__file__
。以两个下划线开头但结尾没有下划线的变量名(__x)是类的成员变量,
交互式模式下,变量名 _ 用于保存最后表达式的结果
命名约定
避免使用的名称
切勿将字符 "l"
(小写字母el),"O"
(大写字母oh)或"I"
(大写字母eye)用作单个字符变量名称。在某些字体中,这些字符与数字1和零没有区别。当尝试使用"l"
时,请改用"L"
。
软件包和模块名称
模块应使用简短的全小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。尽管不鼓励使用下划线,Python软件包也应使用短小写全名。
类名
类名通常应使用驼峰式大小写(CapWords)约定。
在接口被记录并主要用作可调用函数的情况下,可以代替使用函数的命名约定。
请注意,内置名称有一个单独的约定:大多数内置名称是单个单词(或两个单词一起运行),而CapWords约定仅用于异常名称和内置常量。
函数和变量名
变量名与函数名名称应小写,必要时用下划线分隔单词以提高可读性。
# 批量转化为驼峰格式(Camel)
import re
def camel(s):
s = re.sub(r"(\s|_|-)+", " ", s).title().replace(" ", "")
return s[0].lower() + s[1:]
# 批量转化
def batch_camel(slist):
return [camel(s) for s in slist]
以上函数解析如下
\s
指匹配:[ \t\n\r\f\v]
A|B
:表示匹配 A 串或 B 串。
re.sub(pattern, newchar, string):
substitue
代替,用newchar
字符替代与pattern
匹配的字符所有。
title()
: 转化为大写,例子:'Hello world'.title() -> 'Hello World'
。
s = s[0].lower()+s[1:]
将第一个字母转化为小写。
函数和方法参数
始终将self
作为实例方法的第一个参数。始终对类方法的第一个参数使用cls
。
如果函数参数的名称与保留关键字发生冲突,通常最好在末尾附加一个下划线,而不要使用缩写或拼写错误。因此,class_
优于clss
。
常数
常量通常在模块级别定义,并以所有大写字母书写,并用下划线分隔单词。示例包括 MAX_OVERFLOW
和TOTAL
。
总结
做到如下几个方面就会成为一个具有良好编程习惯的程序员。
变量名应该能够描述变量表示的信息。
优先考虑代码的易懂性,而不是编写代码的速度。
采用标准的命名约定,做出一个全局决策而不是多个本地决策。
变量/函数名称:用小写字母表示,中间用下划线分割。
常量:用大写字母。
Class类:首字母大写,其余小写。
参考资料
[1]
python官网: https://www.python.org/dev/peps/pep-0008/#naming-conventions
[2]维基百科: https://en.wikipedia.org/wiki/Camel_case
-- 数据STUDIO --