5. 变量与常量
变量
所谓"变量",就是在程序运行过程中值可以被改变的量。变量是数据的载体,简单说就是一块用来保存数据的内存空间,变量的值可以被读取和修改。和变量相对应的是"常量",也就是在程序运行过程中值不能改变的量。
每个变量在使用前都必须赋值,变量赋值以后才会在内存中被创建。Python 中的变量在赋值时不需要类型声明,使用等号(=)来赋值,解释器会根据赋值语句自动推断变量类型。
在 Python 3.x 中,允许变量名是中文字符,但通常不推荐使用中文变量名:
num = 128 # 整数变量
姓名 = "小明" # 中文变量名可用,但不推荐
print(姓名)
a = b = c = 1 # 一次为多个变量赋同样的初值
print(id(a), id(b), id(c)) # 三个变量指向同一内存地址
# Python 是动态类型语言,变量的类型可以随时变化
number = 512 # 整型变量
print(type(number)) # <class 'int'>
number = "我爱Python编程" # 字符串类型变量
print(type(number)) # <class 'str'>
▶ 运行结果:
小明
140709591196584 140709591196584 140709591196584
<class 'int'>
<class 'str'>
常用数据类型
2. 整型(int)
Python 中可以处理任意大小的整数,支持二进制(0b前缀)、八进制(0o前缀)、十进制和十六进制(0x前缀)的表示法:
print(0b100) # 二进制整数 → 4
print(0o100) # 八进制整数 → 64
print(100) # 十进制整数 → 100
print(0x100) # 十六进制整数 → 256
▶ 运行结果:
4
64
100
256
3. 浮点型(float)
浮点数即小数,除了数学写法(如 123.456)外还支持科学计数法(如 1.23456e2 表示 1.23456×10²):
print(123.456) # 数学写法
print(1.23456e2) # 科学计数法 = 123.456
▶ 运行结果:
123.456
123.456
4. 复数(complex)
复数由实数部分和虚数部分构成,可以用 a + bj 或 complex(a, b) 表示,实部和虚部都是浮点型。
a = 2.38 + 18.2j # 复数赋值
print(a)
▶ 运行结果:
(2.38+18.2j)
5. 字符串型(str)
字符串是 Python 中最常用的数据类型,是连续的字符序列,一般使用单引号(' ')、双引号(" ")或三引号(''' '''或""" """)界定。单引号和双引号中的字符序列必须在一行上,三引号内的字符序列可以分布在连续的多行上。
print('hello')
print("hello")
str1 = """白日依山尽
黄河入海流
欲穷千里目
更上一层楼
"""
print(str1)
▶ 运行结果:
hello
hello
白日依山尽
黄河入海流
欲穷千里目
更上一层楼
转义字符
Python 支持转义字符,即使用反斜杠 \ 对一些特殊字符进行转义:
| 转义字符 | 含义 |
|---|---|
\n | 换行符 |
\r | 回车 |
\t | 制表符 |
\\ | 一个反斜杠 \ |
\' | 单引号 ' |
\" | 双引号 " |
str2 = "白日依山尽\n黄河入海流\n欲穷千里目\n更上一层楼\n"
print(str2)
# 不同编码的字符,占用的字节数不一样
print(len('ABC')) # 3
print(len('\xe4\xb8\xad\xe6\x96\x87')) # 6(UTF-8 编码,每个中文字符占 3 字节)
print(len('中'.encode('utf-8'))) # 3
print(len('中')) # 1(Unicode 字符数)
▶ 运行结果:
白日依山尽
黄河入海流
欲穷千里目
更上一层楼
3
6
3
1
6. 布尔型(bool)
布尔型只有 True、False 两种值,可用于表示现实世界中的"是"和"否"、命题的"真"和"假"等。如果一个变量的值只有两种状态,就可以使用布尔型。
print(True)
print(False)
▶ 运行结果:
True
False
变量命名规则与惯例
规则(必须遵守):
- 变量名由字母(推荐英文字母)、数字和下划线构成,数字不能开头
- Python 是大小写敏感的编程语言(大写的
A和小写的a是两个不同的变量) - 变量名不要跟 Python 的关键字重名,尽可能避开保留字(如
int、print、input、str等)
惯例(推荐遵守):
- 变量名通常使用小写英文字母,多个单词用下划线连接
- 受保护的变量用单个下划线开头
- 私有的变量用两个下划线开头
a = 45 # 定义变量a,赋值45
b = 12 # 定义变量b,赋值12
print(a, b) # 45 12
print(a + b) # 57
print(a - b) # 33
print(a * b) # 540
print(a / b) # 3.75
▶ 运行结果:
45 12
57
33
540
3.75
type() 检查变量类型
可以使用 type() 函数对变量的类型进行检查:
a = 100
b = 123.45
c = 'hello, world'
d = True
print(type(a)) # <class 'int'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'str'>
print(type(d)) # <class 'bool'>
▶ 运行结果:
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
类型转换
可以通过 Python 内置的函数来改变变量的类型:
| 函数 | 功能 |
|---|---|
int() | 将一个数值或字符串转换成整数,可指定进制 |
float() | 将一个字符串转换成浮点数 |
str() | 将指定的对象转换成字符串 |
chr() | 将整数(字符编码)转换成对应字符 |
ord() | 将一个字符转换成对应的整数(字符编码) |
a = 100
b = 123.45
c = '123'
d = '100'
e = '123.45'
f = 'hello, world'
g = True
print(float(a)) # 100.0 —— int 转 float
print(int(b)) # 123 —— float 转 int(截断小数)
print(int(c)) # 123 —— str 转 int
print(int(c, base=16)) # 291 —— str 按十六进制转 int
print(int(d, base=2)) # 4 —— str 按二进制转 int
print(float(e)) # 123.45 —— str 转 float
print(bool(f)) # True —— 有内容即为真
print(int(g)) # 1 —— True→1, False→0
print(chr(a)) # 'd' —— ASCII 码 100 对应字符 'd'
print(ord('d')) # 100 —— 字符 'd' 对应 ASCII 码 100
▶ 运行结果:
100.0
123
123
291
4
123.45
True
1
d
100