本篇是 Python 核心知识学习系列的第一篇文章,将分享 Python 编程时应注意的一些基础语法,写出符合 Python 规范的代码,提高代码的可读性。
本文主要包含以下两部分:1 基础语法
2 风格规范
第一部分:基础语法
基础语法部分主要包含以下几小点:缩进
编码
标识符
注释
多行语句
引号缩进
大部分的编程语言都是使用{}来表示一个代码段,而 Python 用缩进层次来组织代码块,默认一个缩进使用 “四个空格”表示。
2. 编码
Python 有 Python2 和 Python3 两个版本,目前 Python2 官方已不再维护,如果学习 Python 可以直接学习 Python3。两个版本的 Python 编码也有区别:Python3 中有两种表示字符序列的类型: bytes 和 str,其中 bytes 是包含8位值的序列,str 是包含 Unicode 字符的序列。
Python2 中两种表示字符序列的类型:str 和 unicode,其中 str 是包含8位值的序列,unicode 是包含 Unicode 字符的序列。
使用 encode 方法将 Unicode 字符转换成二进制数据,使用 decode 方法将二进制数据解码成 Unicode 字符。
将 Unicode 字符表示为二进制数据最常用的编码方式为 UTF-8。
在 Python3 中,可以利用辅助函数将 str 或者 bytes 转换成 str:
def to_str(bytes_or_str):
if isinstance(bytes_or_str, str):
value = bytes_or_str
else:
value = bytes_or_str.decode('utf-8')
return value
也可以利用辅助函数将 str 或者 bytes 转换成 bytes:
def to_bytes(bytes_to_str):
if isinstance(bytes_to_str, bytes):
value = bytes_to_str
else:
value = bytes_to_str.encode('utf-8')
return value
3. 标识符
Python标识符命名规范:标识符由字母(A~Z 和 a~z)、数字和下划线组成,首字符必须以字母或下划线。
区分大小写。
不是能 Python 关键字。
标识符编码习惯:见名知义,使用有意义的单词或词组,不要使用拼音。
采用下划线命名法或驼峰式命名法。
使用下划线连接单词命名(推荐使用这种方式):var_name。
小驼峰式命名:第一个单词小写,其他单词大写,如 myName。
大驼峰式命名:每个单词首字母都为大写,如 ClassName。
Google Python命名规范:模块和包:小写字母,尽量简单,可以使用“_”连接,如module_name,package_name。
类名:使用大驼峰式命名,如ClassName。
函数名和类中的方法名:全部使用小写字母,多个单词之间下划线连接,如 function_name,method_name。
变量名(全局变量、局部变量、类变量、实例变量):全局变量大写,局部变量名、类变量名、实例变量名小写,使用下划线连接,如GLOBAL_VAR_NAME, local_var_name, class_var_name, instance_var_name。
常量名:大写字母,使用下划线连接,如 CONSTANT_NAME。
函数和方法的参数:小写字母,如 func_parameter_name。
异常:使用大驼峰式命名,如 ExceptionName。
标识符以下划线开头:以单下划线“_”开头:受保护的变量,表示不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from module_name import * 导入。只有类和子类对象可以访问这些变量。
双下划线“__”开头:私有成员,只有类对象可以访问。
双下划线开头和结尾:专用标识符,有特殊的身份,如 __init__。
4. 注释单行注释:# 开头。
多行注释:可以每一行都以 # 开头,也可以用 """ """ 或 ''' ''' 。
5. 多行语句
使用斜杠( \ )将一行的语句分为多行显示。
s = "Explicit is better than implicit." \
"Simple is better than complex."
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠( \ )。
s = ("Explicit is better than implicit."
"Simple is better than complex.")
6. 引号
Python支持单引号('')、双引号("")、三引号(""" """或''' ''')表示字符串。三引号可以定义多行字符串,同时也可以进行多行注释。
# 多行字符串
s = """Explicit is better than implicit.
Simple is better than complex."""
# 多行注释
"""
注释第一行
注释第二行
"""
第二部分:风格规范
Google Python 风格规范缩进用4个空格来缩进代码,不要使用Tab。
对于占据多行的表达式,除首行外其余各行都应该在通常缩进级别上再加4个空格。
与开头分隔符对齐:
var_name = (value1, value2, value3,
value4, value5)
4个空格缩进,第一行无参数:
func = function_name(
arg1, arg2, arg3,
arg4)
在字典中,四个空格缩进:
dic = {
long_dictionary_key:
long_dictionary_value,
}
2. 空行
函数或者类之间用两个空行隔开。在同一个类中,方法之间或者类与第一个方法之间,用一个空行隔开。
3. 空格
括号内不要有空格。
funcName(A[1], B[2], [1, 2, 3])
不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加(行尾除外)。
if x > y:
print(x, y)
参数列表, 索引或切片的左括号前不应加空格。
arr[1]
list[1:3]
在使用赋值(=)、比较(==、>、、>=、<=、is、is not、in、not in)、布尔(not、and、or)等操作符时,左右两侧各加一个空格。
a == b
not flag
当‘=’用于指示关键字参数或默认参数值时, 不要在其两侧使用空格。
funcName(id=None, score=None)
4. 行长度每行不超过80个字符,其中长的导入模块语句和注释里的URL除外。
不要使用反斜杠连接行,可以用圆括号、中括号和花括号连接。
如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接。
funName(arg1, arg2, arg3, ...,
argN-1, argN)
x = ('This will build a very long long '
'long long long long long long string')
5. 表达式和语句判断somelist是否为[]或""时,建议使用if not somelist来判断,而不是用if len(somelist) == 0检测长度来判断。
判断somelist为非空时,使用if somelist语句。
import语句总是放在文件开头。
文件中import模块划分为三部分,即标准库模块、第三方模块和自用模块,各部分按字母顺序排列。
6. 文档字符串
文档字符串是包, 模块, 类或函数里的第一个语句,是一种注释,可以通过访问 __doc__ 属性,查看对象的文档字符串,或者调用 help() 函数来查看。文档字符串的缩进必须与定义中的所有其它语句保持一致。
使用三重双引号""" """。
文档字符串应该包含:第一行简述功能,第二行为空行,第三行开始是具体描述。
—END—