5. 变量与常量

变量

所谓"变量",就是在程序运行过程中值可以被改变的量。变量是数据的载体,简单说就是一块用来保存数据的内存空间,变量的值可以被读取和修改。和变量相对应的是"常量",也就是在程序运行过程中值不能改变的量。

每个变量在使用前都必须赋值,变量赋值以后才会在内存中被创建。Python 中的变量在赋值时不需要类型声明,使用等号(=)来赋值,解释器会根据赋值语句自动推断变量类型。

在 Python 3.x 中,允许变量名是中文字符,但通常不推荐使用中文变量名:

python
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前缀)的表示法:

python
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²):

python
print(123.456)      # 数学写法
print(1.23456e2)    # 科学计数法 = 123.456

▶ 运行结果:

输出
123.456
123.456

4. 复数(complex)

复数由实数部分和虚数部分构成,可以用 a + bjcomplex(a, b) 表示,实部和虚部都是浮点型。

python
a = 2.38 + 18.2j   # 复数赋值
print(a)

▶ 运行结果:

输出
(2.38+18.2j)

5. 字符串型(str)

字符串是 Python 中最常用的数据类型,是连续的字符序列,一般使用单引号' ')、双引号" ")或三引号''' '''""" """)界定。单引号和双引号中的字符序列必须在一行上,三引号内的字符序列可以分布在连续的多行上。

python
print('hello')
print("hello")

str1 = """白日依山尽
黄河入海流
欲穷千里目
更上一层楼
"""
print(str1)

▶ 运行结果:

输出
hello
hello
白日依山尽
黄河入海流
欲穷千里目
更上一层楼

转义字符

Python 支持转义字符,即使用反斜杠 \ 对一些特殊字符进行转义:

转义字符 含义
\n换行符
\r回车
\t制表符
\\一个反斜杠 \
\'单引号 '
\"双引号 "
python
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)

布尔型只有 TrueFalse 两种值,可用于表示现实世界中的"是"和"否"、命题的"真"和"假"等。如果一个变量的值只有两种状态,就可以使用布尔型。

python
print(True)
print(False)

▶ 运行结果:

输出
True
False

变量命名规则与惯例

规则(必须遵守):

  1. 变量名由字母(推荐英文字母)、数字和下划线构成,数字不能开头
  2. Python 是大小写敏感的编程语言(大写的 A 和小写的 a 是两个不同的变量)
  3. 变量名不要跟 Python 的关键字重名,尽可能避开保留字(如 intprintinputstr 等)

惯例(推荐遵守):

  1. 变量名通常使用小写英文字母,多个单词用下划线连接
  2. 受保护的变量用单个下划线开头
  3. 私有的变量用两个下划线开头
python
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() 函数对变量的类型进行检查:

python
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()将一个字符转换成对应的整数(字符编码)
python
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