本节会对Python 的基础语法进行讲解说明,如注释、缩进规则、编码规范等。
1. 注释
注释是对程序的解释和说明。Python 支持两种注释类型:单行注释、多行注释。
1.1 单行注释
使用井号键“#”作为单行注释的符号,语法格式如下:
#注释内容
1.2 多行注释
在注释内容的开头与结尾处各自使用三个单引号“'''”或三个双引号“"""”(单引号和双引号请通过英文输入法下进行),即可对多行内容进行注释,语法格式如下:
'''
注释内容
注释内容
'''
"""
注释内容
"""
2. 缩进规则
Python 采用代码缩进和冒号“:”来区分代码块之间的层次。
在Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,代表下一个代码块的开始,而缩进的结束则表示此代码块的结束。
以下图代码为例,每一个红框为一个代码块。
Python 对代码的缩进要求非常严格,同一级别的代码块的缩进量必须是一致的。在编码
时,可以使用“Tab”键进行缩进,也可以通过自行输入4 个空格进行缩进。
注意:通常以4 个空格为一个缩进单位。默认情况下,一个“Tab”键代表4 个空格。
PyCharm的Tab也是可以配置的,如下图所示
3. 编码规范
Python 采用PEP8 作为编码规范。其中,“PEP”是指8号Python 增强建议书(Python
Enhancement Proposal #8)。
在编码时严格遵守编码规范,能够令代码看起来更整洁、美观,有益于增加代码的可读性。下面是部分编码规则:
注:这部分内容并不是强制规定,只是一个良好编程规则的建议
1、一个import 导入一个模块,尽量避免一次导入多个模块。
推荐 | import os import sys |
不推荐 | import os,sys |
2、不在行尾添加分号“;”,不将两条命令放置在同一行。
推荐 | print("Hello World") |
不推荐 | print("Hello World");print("myFriend") |
3、每行的字符数尽量不多于80,可将命令分为多行,并使用小括号“()”进行连接。
此外,不推荐使用反斜杠“\”连接多行内容。
推荐 | a=(b+ c) print(a,b,c) |
不推荐 | a=b+\ print(a,b,c) |
4、使用必要的空行可以增加代码的可读性。
5、通常情况下,运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔。
4. 标识符号命名规则
标识符的主要作用就是作为变量、函数、类、模块以及其他对象的名称。在Python 中,标识符的命名需要遵守一定的命令规则,例如:
- 标识符由字符(A~Z、a~z)、下划线“_”和数字组成,但不能使用数字作为第一个字符。
- 标识符不能和Python 中的关键字/保留字相同,
- 标识符中不能包含空格、“@”、“%”和“$”等特殊字符。
- 标识符中的字母是严格区分大小写的。以“num”、“Num”和“NUM”为例,这三个变量是完全独立、毫无关联的。
- 以下划线“_”为开头的标识符具备特殊含义,除非特定场景需要,应避免使用以下划线开头的标识符。
下划线前导变量说明
- 双前导和末尾下划线(__var__):这种用法表示Python里的特殊方法专用的标识,如
__init__
代表类的构造函数。这些方法名通常以双下划线开始和结束,并且具有特殊的用途 - 单前导下划线(_var):下划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用,该约定在PEP 8中有定义。这不是Python强制规定的。Python不像Java那样在"私有"和"公共"变量之间有很强的区别。前导下划线的确会影响从模块中导入名称的方式,如果使用通配符从模块中导入所有名称,则Python不会导入带有前导下划线的名称(from my_module import *);常规导入不受前导单个下划线命名约定的影响(import my_module)。
- 双下划线前缀(__var):双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。在子类访问时,该变量会被改写成 classname_var,这意味着,这些名称在类的外部无法直接访问,从而在一定程度上避免了命名冲突。
5. 数据类型
Python3 中的数据类型分为六大类:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。
其中,数字(Number)、字符串(String)和元组(Tuple)是不可变数据,而列表(List)、字典(Dictionary)和集合(Set)是可变数据。
注意:在Python 中,可以利用type()函数查看变量的类型。
在Python中,可变和不可变是针对数据结构的属性而言的。可变数据类型指的是数据结构内部的元素可以改变,如列表(list)和字典(dict)。不可变数据类型指的是数据结构内部的元素不可以改变,如整数(int)、浮点数(float)、字符串(str)、元组(tuple)等。
对于不可变数据类型,如果你想改变变量的值,你需要创建一个新的对象并将变量重新指向它。
例如,当你尝试修改一个整数的值时:
x = 5
x = 10 # 这里并不是改变了x的值,而是创建了一个新的整数对象10,并让x指向它
对于可变数据类型,如列表,你可以直接修改列表内部的元素,也可以添加或删除元素:
lst = [1, 2, 3]
lst[1] = 20 # 直接修改列表中的元素
lst.append(4) # 添加新元素
不可变数据类型的主要优点是它们是无状态的,易于进行比较操作,并且可以作为字典的键。另外,多个引用指向同一个不可变对象时,它们实际上指向的是同一个内存地址,这可以提高内存的使用效率。
5.1 数字
表示数字或数值的数据类型称为数字类型。数字类型包含以下四种:
- 整型(int):表现形式有二进制、八进制、十进制和十六进制。
- 浮点型(float):一般以十进制表示,由整数和小数组成。每个浮点型数据占8 个字节,即64 位。
- 复数类型(complex):由实部和虚部组成,实部部分和虚部部分都是浮点型。
- 布尔类型(bool):仅有“True”和“False”两个取值,“True”对应整数“1”,“False”对应整数“0”。
5.2 字符串
一个字符串就是若干个字符的集合。在Python 语言中,字符串的表示方法有三种:单引号“'”、双引号“"”和三重引号(即三个单引号“'''”或三个双引号“"""”)。其中,用单引号和双引号表示的字符串是等价的,且返回对象的类型相同。
注意:当字符串内出现引号,需要对其进行转义处理,即在引号前添加反斜杠“\”,以免出现语法错误。
5.3 列表(List)
列表是Python 中的一种序列结构,可以存储任意类型的数据,如整数、小数、字符串、列表、元组等,其创建格式如下:
变量名= [元素1, 元素2,..., 元素n]
列表不限制元素个数,且同一列表内可包含不同数据类型的元素。但为了程序的可读性,建议一个列表内只存放一种类型的数据。列表的每一个元素都对应一个整数型的索引值,可以通过索引值来得到相应的元素值,进而对其进行修改与删除。
5.4 元组(Tuple)
元组是Python 中另一种重要的序列结构,和列表类似,其创建格式如下:
变量名= (元素1, 元素2,..., 元素n)
与列表不同,元组是不可变序列,不支持修改或删除元素值。此外,元组内只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。
5.5 字典(Dictionary)
字典是一种无序的、可变的序列,其创建格式如下:
变量名= (key1:value1, key2:value2,…, keyn:valuen)
字典是Python 中唯一的映射类型,即元素之间存在相互对应的关系。一般将各个元素对应的索引称为“键(key)”,各个键对应的元素称为“值(value)”,键与其关联的值称为“键值对”。
字典的元素可以是列表、元组、字典等任意数据类型,但键(key)值必须使用不可变类型。此外,在同一个字典变量中,键(key)值必须是唯一的。
6.6 集合(Set)
集合用于存储不重复的元素,其创建格式如下:
变量名= {元素1, 元素2,..., 元素n}
集合只能存储不可变的数据类型,如整形、浮点型、字符串、元组,而无法存储列表、字典、集合这些可变的数据类型。