Python: 变量与基本数据类型

最后更新:2026-09-22

上一课我们让 Python 输出了一行"Hello, World!"。但如果每次都只能输出固定的内容,编程就太无聊了。这一课我们来学变量——它是编程中最基础也最重要的概念,相当于给数据贴上一张带名字的标签,让你可以随时存取和修改。


相关关键字与语句:print() type() return import float str() while class False bool True None int for def

1. 变量是什么

变量就是给数据起个名字。你可以把它想象成一个带标签的盒子:标签上写着名字(变量名),盒子里装着数据(值)。

PYTHON
# 定义一个变量,名字叫 age,里面装了数字 18
age = 18

当你写 age = 18 时,Python 做了两件事:

  1. 在内存中划出一块空间,存入数字 18。
  2. 给这个空间贴上标签 age,以后你叫 age,Python 就知道要找那个数字 18。

从此,age 就代表数字 18,你可以用它来计算、输出、修改:

PYTHON
age = 18
print(age)       # 输出 18
print(age + 5)   # 输出 23
age = 20         # 换个值,盒子里的内容变了
print(age)       # 输出 20
💡 提示:变量之所以叫"变量",是因为它的值可以变。第一次赋值是 age = 18,后面改成 age = 20,同一个名字可以指向不同的值。这在编程中非常关键。



2. 变量的命名规则

Python 对变量名有一些硬性规定和约定俗称的规范:

(1) 必须遵守(否则报错)

规则 正确的例子 错误的例子
只能包含字母、数字、下划线 my_name、age2 my-name(短横线不可以)
不能以数字开头 name1 1name
不能是 Python 的关键字 my_if if(if 是关键字)
区分大小写 name 和 Name 是两个不同的变量 —

Python 的关键字(也叫保留字)有 35 个,比如 if、for、while、import、class、def、return 等。这些词是 Python 语法的一部分,不能用来做变量名。

(2) 建议遵守(规范写法,PEP 8)

PEP 8 是 Python 的官方代码风格指南,业界普遍遵守:

PYTHON
# 好名字(一眼就懂)
total_price = 99.9
student_count = 35

# 差名字(看了也不知道在干嘛)
a = 99.9
b = 35
💡 提示:好代码的第一条标准是"别人不用注释也能看懂你的意图"。变量命名就是第一步。花 5 秒钟想一个好名字,是在给未来读代码的自己节省 5 分钟。



3. 基本数据类型

Python 中常用的基本数据类型有 5 种:

类型名称 Python 写法 示例 说明
整数 int 42、-1、1000 没有小数点的整数
浮点数 float 3.14、-0.5、2.0 带小数点的数
字符串 str "你好"、'Python' 文本,用引号包着
布尔值 bool True、False 表示真/假,首字母大写
空值 NoneType None 表示"什么都没有",首字母大写
PYTHON
# 每个类型定义一个变量
age = 25              # int,整数
price = 19.99         # float,浮点数
name = "Charlie"         # str,字符串
is_student = True     # bool,布尔值
result = None         # NoneType,空值

print(age)            # 输出 25
print(price)          # 输出 19.99
print(name)           # 输出 Charlie
print(is_student)     # 输出 True
print(result)         # 输出 None

(1) 用 type() 查看类型

如果你不确定一个变量是什么类型,可以用 type() 函数检查:

PYTHON
print(type(42))        # <class 'int'>
print(type(3.14))      # <class 'float'>
print(type("Hello"))   # <class 'str'>
print(type(True))      # <class 'bool'>
print(type(None))      # <class 'NoneType'>

(2) 动态类型

Python 是动态类型语言,意思是同一个变量可以先后存放不同类型的值:

PYTHON
x = 10         # 此时 x 是整数
print(x)       # 输出 10
x = "你好"     # 同一变量,变成字符串
print(x)       # 输出 你好
x = True       # 又变成布尔值
print(x)       # 输出 True

这在 C++ 或 Java 这样的静态类型语言中是不允许的——声明时是什么类型,一辈子就是什么类型。动态类型的优点是灵活、代码简洁,缺点是一个变量不小心被改了类型,可能导致运行时错误(后面会看到例子)。

⚠️ 注意:动态类型虽然灵活,但不建议滥用。实际项目中,尽量让一个变量只存放一种类型的数据,避免把自己搞晕。



4. print() 的更多用法

第01课我们已经见了 print(),这里补充两个常用技巧:

(1) 用逗号输出多个值

PYTHON
name = "Diana"
age = 22
print("我叫", name, ",今年", age, "岁")
# 输出:我叫 Diana ,今年 22 岁

print() 的多个参数之间会自动加一个空格。如果想去掉这个空格,或者用其他符号分隔,可以用 sep 参数:

PYTHON
print("2026", "06", "19", sep="-")
# 输出:2026-06-19

(2) 用 end 控制结尾

默认情况下,print() 会在输出内容后面加一个换行。用 end 参数可以改变这个行为:

PYTHON
print("第一行", end=" → ")
print("第二行", end=" → ")
print("第三行")
# 输出:第一行 → 第二行 → 第三行


5. f-string:在字符串中插入变量

你已经在前面的例子中见过 f"你好,{name}" 这种写法了。它叫 f-string(格式化字符串),是 Python 中最常用的字符串格式化方式。简单说就是:在字符串前面加一个 f,然后在里面用 {} 把变量名包起来,Python 就会把变量的值替换进去。

PYTHON
name = "Diana"
age = 22
print(f"我叫{name},今年{age}岁。")
# 输出:我叫Diana,今年22岁。

花括号里不只是放变量名,还可以放表达式:

PYTHON
a = 10
b = 3
print(f"{a} + {b} = {a + b}")   # 输出:10 + 3 = 13
print(f"{a} × {b} = {a * b}")   # 输出:10 × 3 = 30

还可以控制数字的显示格式:

PYTHON
pi = 3.14159265
print(f"π = {pi}")              # 输出:π = 3.14159265
print(f"π ≈ {pi:.2f}")          # 输出:π ≈ 3.14(保留2位小数)
print(f"π ≈ {pi:.4f}")          # 输出:π ≈ 3.1416(保留4位小数)

# 大数字加千分位分隔符
big = 1234567
print(f"{big:,}")               # 输出:1,234,567
💡 提示::.2f 中的冒号后面是格式说明——. 表示小数,2 是小数位数,f 表示浮点数。:, 表示加千分位逗号。记不住不要紧,知道有这回事就行,用多了自然就熟了。



6. 示例

▶ 示例 1:用变量记录个人信息(难度⭐)

这个例子展示了如何用变量存储个人信息,并在输出中引用它们。

▶ 试一试

运行结果:

TEXT 📖 仅展示
姓名:Alice
年龄:28 岁
身高:1.75 米
是否在学编程:True
Alice 的身高是年龄的 0.062 倍

这里有一个小细节:{height / age:.3f} 中的 :.3f 表示"保留 3 位小数",控制数字的显示格式。

▶ 示例 2:变量之间的运算(难度⭐⭐)

不同类型的变量,可以做不同的运算。但有些运算规则需要留意。

▶ 试一试

运行结果:

TEXT 📖 仅展示
10 + 3 = 13
10 - 3 = 7
10 * 3 = 30
10 / 3 = 3.3333333333333335
10 // 3 = 3
10 % 3 = 1
10 ** 3 = 1000
全名:Alice
⚠️ 注意:+ 在数字之间是加法,在字符串之间是拼接。但字符串和数字之间不能用 +——Python 不会自动帮你把数字转成字符串。如果非要拼接,可以手动转换:"年龄:" + str(25),str() 函数可以把其他类型转成字符串。

▶ 示例 3:多重赋值与交换变量(难度⭐⭐⭐)

Python 有一些简洁的写法,让代码更优雅:

▶ 试一试

运行结果:

TEXT 📖 仅展示
x=10, y=20, z=30
交换前:a=5, b=10
交换后:a=10, b=5
p=0, q=0, r=0

a, b = b, a 之所以能交换,是因为 Python 在执行赋值之前,会先计算等号右边的所有表达式,把结果存起来,然后一次性赋给左边的变量。整个过程是安全的。

💡 提示:这种"Python 风格"的写法看起来很酷,但用多了会让不熟悉 Python 的人看不懂。在团队项目中,适度使用就好。



7. 常见应用场景


相关关键字与语句:print() type() return import float str() while class False bool True None int for def

❓ 常见问题

Q = 是表示"相等"吗?为什么不是数学里的等号?
A 在 Python 中,= 是赋值运算符,意思是"把右边的值存到左边的变量中"。它不是一个"等号"声明——它是一条指令。要判断两个值是否相等,用的是 ==(两个等号)。初学者最常犯的错误之一就是在条件判断时把 == 写成 =。
Q 我为什么不能用中文作为变量名?明明 Python 3 是支持的啊?
A 技术上 Python 3 确实支持用中文做变量名(比如 姓名 = "Alice"),但强烈不建议这么做。原因是绝大多数编程相关的工具、库、代码片段都是英文命名的。中英文混写会让代码看起来非常奇怪,而且如果将来和国际团队协作,中文变量名会成为交流障碍。请坚持用英文命名变量。
Q float 类型为什么不精确?0.1 + 0.2 为什么等于 0.30000000000000004?
A 这不是 Python 的问题,而是计算机底层用二进制存储浮点数的固有限制。就像十进制无法精确表示 1/3 = 0.333... 一样,二进制也无法精确表示 0.1 和 0.2。如果你需要精确计算(比如处理金额),用 decimal 模块(后面会讲到),不要用 float。
Q None 和 0、空字符串 "" 有什么区别?
A None 表示"什么都没有"、"值不存在",它和 0、""、False 都不是一回事。0 是一个数字,"" 是一个空字符串,False 是布尔假值——它们都是"有东西的",只是恰好表示"没有内容"。而 None 是"连容器都没有"。想象一下:"" 是一个空碗,None 是连碗都没有。

📖 小节


📝 作业

  1. 基础题(难度⭐):定义三个变量 city、temperature、is_sunny,分别存储你所在的城市名、今日温度(浮点数)、是否是晴天(布尔值),然后用 print() 输出一句完整的描述。

  2. 进阶题(难度⭐⭐):定义两个整数变量 minutes 和 hours,把 hours 转换成分钟数,加上 minutes,输出总共有多少分钟。比如 hours=2, minutes=15 应输出 135 分钟。提示:1 小时 = 60 分钟。

  3. 挑战题(难度⭐⭐⭐):不使用临时变量,交换三个变量的值,实现循环移位:a → b → c → a(即 a 的新值是 b 原来的值,b 的新值是 c 原来的值,c 的新值是 a 原来的值)。提示:核心思路是 a, b, c = b, c, a。

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏