2. 变量和简单类型
变量是编程的起始点,程序用到的各种数据都是存储在变量内的。在 Python 中,所有的变量无须声明即可使用,同时,变量的数据类型可以随时改变。本章会详细介绍变量的使用方法以及数据类型,如整型、浮点型等其他基础数据类型,连接数据之间的是各种运算符号,本章会详细介绍基本的运算符,包括所有的算术运算符,以及功能丰富的位运算符、比较运算符、逻辑运算符,这些运算符是Python 编程的基础。
2.1. 单行注释和多行注释
为程序添加注释可以用来解释程序某些部分的作用和功能,提高程序的可读性。在 Python 语言中,允许在任何地方插入空字符或注释,但不能插入到标识符和字符串中间。 Python 代码的注释有两种形式:
- 单行注释,使用井号
#
表示单行注释的开始,#
后面即为注释的内容 - 多行注释,使用三个单引号
'''
或三个双引号"""
将注释的内容括起来,注意是一对符号
单行注释和多行注释的使用方法如下代码所示:
#这是一行简单的注释
print("Hello World!")
'''
这里面的内容全部是多行注释
Python 语言真的很简单
'''
#print("这行代码被注释了,将不会被编译、执行!")
"""
这是用三个双引号括起来的多行注释
Python 同样是允许的
"""
此外,为不需要执行的代码添加注释也是调试程序的一个重要方法。
2.2. 变量
变量是用来保存数据,同样,常量也是用来保存数据的,但两者之间最主要的区别是变量中保存的数据是可变的,但是常量中一旦保存了某个数据之后,就不能再改变。
Python 使用等号 =
作为赋值运算符,例如 a = 20
就是一条赋值语句,这个过程就被称为赋值。 Python 是弱类型语言,弱类型语言有两个典型特征:
- 变量无须声明即可直接赋值:对一个不存在的变量赋值就相当于定义了一个新变量
- 变量的数据类型可以动态改变:同一个变量可以被赋值为整数值,也可以被重新赋值为字符串
使用方法如下代码所示:
# 定义变量 a
a = 10 # 定义整型变量
print(type(a)) # <class 'int'>
print(a) # 10
a = 10.01 # 定义浮点型变量
print(type(a)) # <class 'float'>
print(a) #v 10.01
2.2.1. 变量的输出
在上述的例子中,使用到了 print()
函数来输出一个变量,实际上 print()
函数完全可以同时输出多个变量,而且它具有更多丰富的功能。 print()
函数的详细语法格式如下:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
从上面的语法格式可以看出, value 参数可以接受任意多个变量或值,因此 print()
函数完全可以输出多个值。例如如下代码。
user_name = 'felixzhao
user_age = 30
# 同时输出多个变量和字符串
# 输出:user_name: felixzhao , user_age: 30
print("user_name:", user_name, ", user_age:", user_age)
在使用 print()
函数输出多个变量时,还可以通过 sep
参数设置分隔符,如下代码所示:
# 通过 sep 参数设置分隔符
# 输出:user_name:|felixzhao|, user_age:|30
print("user_name:", user_name, ", user_age:", user_age, sep='|')
file 参数指定 print()
函数的输出目标, file 参数的默认值为 sys.stdout,该默认值代表了系统标准输出,也就是屏幕,因此 print()
函数默认输出到屏幕。实际上,完全可以通过改变该参数让 print()
函数输出到特定文件中,例如如下代码。
# 打开文件以便写入
f = open("test.txt", "w")
print("Hello World", file=f)
f.close()
print()
函数的 flush 参数用于控制输出缓存,该参数一般保持为 False 即可, 这样可以获得较好的性能。
2.2.2. 变量的命名规则
Python 需要使用标识符给变量命名, Python 语言的标识符必须以字母、下画线 _
开头,后面可以跟任意数目的字母、数字和下画线 _
。在使用标识符时,需要注意如下规则:
- 标识符可以由字母、数字、下画线
_
组成,且不能以数字开始 - 标识符不能是 Python 中的关键字,但可以包含关键字
- 标识符不能包含空格
2.2.3. Python 中的关键字
Python 还包含一系列关键字和内置函数, 一般也不建议使用它们作为变量名。可以通过 Python 程序来查看它所包含的关键字,代码如下所示:
# 导入keyword 模块
import keyword
# 显示所有关键字
keyword.kwlist
运行上面程序,最终可以看到如下输出结果:
['False', 'None', 'True', 'and', 'as', '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', 'yield']
2.3. 数值类型
数值类型是计算机程序最常用的一种类型, Python 提供了对各种数值类型的支持,如整型、浮点型和复数。
2.3.1. 整型
Python 的整型支持各种整数值,包括小的整数值,大的整数值,使用方法如下代码所示:
# 定义变量 a ,赋值为 56
a = 56
print(a)
# 为 a 赋值一个大整数
a = 9999999999999999999999
print(a)
# type() 函数用于返回变量的类型
print (type(a)) # <class 'int'>
Python 的整型支持 None
值,即空值,如下代码所示:
a = None
print(a)
除了以上的十进制写法外,在 Python 中的整型数值总共有 4 种表示形式:
- 十进制形式:也就是上面的例子中的写法
- 二进制形式:以
0b
或0B
开头的整数就是二进制形式的整数 - 八进制形式:以
0o
或0O
开头的整数就是八进制形式的整数 - 十六进制形式:以
0x
或0X
开头的整数就是十六进制形式的整数,其中 10-15 分别以 a-f(此处的a-f 不区分大小写)来表示
具体使用方法如下代码所示:
# 以 0x 或 0x 开头的整型数值是十六进制形式的整数
hex_value1 = 0x13
hex_value2 = 0XaF
print(hex_value1) # 19
print(hex_value2) # 175
# 以 0b 或 0B 开头的整型数值是二进制形式的整数
bin_val = 0b111
print(bin_val) # 7
bin_val = 0B101
print(bin_val) # 5
# 以 0o 或 0O 开头的整型数值是八进制形式的整数
oct_val = 0o54
print(oct_val) # 44
oct_val= 0O17
print(oct_val) # 15
2.3.2. 浮点型
浮点型数值用于保存带小数点的数值, Python 的浮点数有两种表示形式:
- 十进制形式:如 5.12、512.0、0.512
- 科学计数形式:如 5.12e2 (即5.12 × 102 )、5.12E2(即5.12 × 102)
使用方法如下代码所示:
a = 5.2345556
print(a) # 5.2345556
# 输出 a 的类型
print(type(a)) # <class 'float'>
b = 5.12e2
print(b) # 512.0
print(type(b)) # <class 'float'>
2.3.3. 复数
Python 还可以支持复数,复数的虚部用 j
或 J
来表示。使用方法如下代码所示:
a = 3 + 0.2j
print(a) # (3+0.2j)
# 输出复数类型
print(type(a)) # <class 'complex'>
2.4. 运算符
运算符是一种特殊的符号,用来表示数据的运算、赋值和比较等。 Python 语言使用运算符将一个或多个操作数连接成可执行语句,用来实现特定功能。
Python 语言中的运算符可分为如下几种:
- 赋值运算符
- 算术运算符
- 位运算符
- 索引运算符
- 比较运算符
- 逻辑运算符
2.4.1. 赋值运算符
在上述的代码中已经使用到了赋值运算符,赋值运算符就是用于为变量或常量赋值,在 Python 中,使用 =
作为赋值运算符。赋值运算符的使用方式主要有如下的几种:
- 将表达式的值赋给一个变量
- 将一个变量的值赋给另一个变量
- Python 支持连续赋值
# 将表达式的值赋给一个变量
a = 10
pi = 3.14
print(a) # 10
print(pi) # 3.14
# 将一个变量的值赋给另一个变量
b = a
print(b) # 10
# 连续赋值
c1 = c2 = c3 = 20
print(c1) # 20
2.4.2. 算术运算符
Python 支持所有的基本算术运算符,这些算术运算符用于执行基本的数学运算,常用的 7 个基本算术运算符如下所示:
具体使用方法如下代码所示:
a = 10.5
b = 2
# 加法
c = a + b
print(c) # 12.5
# 减法
d = a - b
print(d) # 8.5
e = -a # 作为求负的运算符
print(e) # -10.5
# 乘法
f = a * b
print(f) # 21.0
# 除法
g1 = a / b
print(g1) # 5.25
g2 = a // b
print(g2) # 5.0
# 取余
h = a % b
print(h) # 0.5
# 乘方
i = a ** b
print(i) # 110.25
Python 有两个除法运算符,其中,
/
表示普通除法,而//
表示整除,使用它除出来的结果只保留整数部分。
2.4.3. 位运算符
位运算符直接操作数值的原始 bit 位,Python 支持的位运算符有如下6 个:
位运算符与,或和异或的运算法则如下所示:
使用方法如下代码所示:
print(5 & 9) # 1
print(5 | 9) # 13
print(5 ^ 9) # 12
print(~5) # -6
print(5 << 2) # 20
print(5 >> 2) # 1
2.4.4. 比较运算符与 bool 类型
Python 提供了 bool 类型来表示真(True)或假(False), Python 支持的比较运算符如下:
>
:大于,如果运算符前面的值大于后面的值返回 True,否则返回 False>=
:大于或等于,如果运算符前面的值大于或等于后面的值返回 True,否则返回 False<
:小于,如果运算符前面的值小于后面的值返回 True,否则返回 False<=
:小于或等于,如果运算符前面的值小于或等于后面的值返回 True,否则返回 False==
:等于,如果运算符前面的值等于后面的值返回 True,否则返回 False!=
:不等于,如果运算符前面的值不等于后面的值返回 True,否则返回 Falseis
:判断两个变量所引用的对象是否相同,如果相同返回 True,否则返回 Falseis not
:判断两个变量所引用的对象是否不相同,如果不相同返回 True,否则返回 False
使用方法如下代码所示:
print(5 > 4) # True
print(3 ** 4 >= 90) # False
print(20 >= 20.0) # True
print(5 == 5.0) # True
print(True == False) # False
2.4.5. 逻辑运算符
逻辑运算符用于操作 bool 类型的变量、常量或表达式,逻辑运算的返回值也是 bool 值。 Python 的逻辑运算符有如下三个:
and
:与,前后两个操作数必须都是 True 才返回 True,否则返回 Falseor
:或,只要两个操作数中有一个是 True,就返回 True,否则返回 Falsenot
:非,只需要一个操作数,如果操作数为 True,则返回 False,如果操作数为 False,则返回 True
使用方法如下代码所示:
# 直接对 False 求非运算,将返回True
print(not False) # True
# 5>3 返回 True, 20.0>10 返回 True,求与后返回 True
print(5 > 3 and 20.0 > 10) # True
# 4>=5 返回 False,"c">"a" 返回 True,求或后返回 True
print(4 >= 5 or "c">"a") # True
2.5. 本章小结
本章主要介绍了 Python 编程中的变量以及各种基本数据类型,包括各种数值型、bool 型等。连接不同数据的是各种运算符,在本章中介绍了 Python 中常用的算术运算符、位运算符、赋值运算符、比较运算符、逻辑运算符等,掌握这些运算符是 Python 编程的基础。
本章需要掌握知识点:
- 变量的定义与使用
- Python 关键字
- Python 中常用的数据类型以及注意事项
- Python中的运算符的使用