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 种表示形式:

  • 十进制形式:也就是上面的例子中的写法
  • 二进制形式:以 0b0B 开头的整数就是二进制形式的整数
  • 八进制形式:以 0o0O 开头的整数就是八进制形式的整数
  • 十六进制形式:以 0x0X 开头的整数就是十六进制形式的整数,其中 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 还可以支持复数,复数的虚部用 jJ 来表示。使用方法如下代码所示:

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,否则返回 False
  • is :判断两个变量所引用的对象是否相同,如果相同返回 True,否则返回 False
  • is 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,否则返回 False
  • or :或,只要两个操作数中有一个是 True,就返回 True,否则返回 False
  • not :非,只需要一个操作数,如果操作数为 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 编程的基础。

本章需要掌握知识点:

  1. 变量的定义与使用
  2. Python 关键字
  3. Python 中常用的数据类型以及注意事项
  4. Python中的运算符的使用