11 KiB
第 1-2 课:变量与数据类型
一、本课目标
完成本课后,你应该能够:
- 解释变量是什么,以及为什么程序需要变量;
- 使用赋值符号
=创建变量; - 区分字符串、整数、浮点数和布尔值;
- 使用
type()查看数据类型; - 遵守 Python 变量命名的基本规则;
- 使用变量进行简单计算和文字输出;
- 使用
int()、float()、str()完成简单类型转换; - 看懂变量重新赋值后发生的变化。
二、前置知识
开始本课前,你应该已经能够:
- 使用
python 文件名.py运行 Python 程序; - 使用
print()输出文字; - 知道引号包围的内容是字符串;
- 知道
#开头的内容是注释。
三、变量是什么
变量(Variable)是程序中用于保存数据的名称。
可以把变量想象成一个贴有标签的盒子:
标签:user_name
盒子中的数据:"Bruce"
在 Python 中可以这样写:
user_name = "Bruce"
这行代码表示:把字符串 "Bruce" 保存起来,并使用名称 user_name 指向它。
之后只要使用变量名,就能取得对应的数据:
print(user_name)
变量的价值在于:数据可以被保存、重复使用和修改,不必在每个地方重复写相同内容。
四、认识赋值符号
下面代码中的 = 称为赋值符号:
age = 18
赋值操作按照“先看右边,再交给左边”的方式理解:
- Python 先得到右边的整数
18; - 再让左边的变量名
age指向这个数据。
这里的 = 暂时不要理解成数学中的“左右相等”。Python 中判断两个值是否相等会使用 ==,将在条件判断课程中学习。
五、四种基础数据类型
数据类型用于描述一个数据属于哪一类,以及它通常可以参与哪些操作。
5.1 字符串 str
字符串(String,类型名为 str)用于表示文字:
user_name = "Bruce"
learning_goal = "开发 LLM Agent"
字符串必须使用成对的单引号或双引号包围。
即使内容看起来像数字,只要有引号,它仍然是字符串:
phone_number = "13800000000"
电话号码通常不用于数学计算,因此使用字符串保存更合适。
5.2 整数 int
整数(Integer,类型名为 int)是不带小数部分的数字:
age = 18
course_count = 8
temperature = -2
整数不需要引号,可以参加加、减、乘、除等数学运算。
5.3 浮点数 float
浮点数(Floating-point Number,类型名为 float)通常用于表示带小数部分的数字:
height = 1.75
price = 19.9
progress = 0.25
“浮点数”是计算机领域的常用名称,初学阶段可以先把它理解为小数。
5.4 布尔值 bool
布尔值(Boolean,类型名为 bool)只有两个值:
is_learning = True
is_finished = False
True表示真、是、成立;False表示假、否、不成立。
首字母必须大写,并且不能添加引号。"True" 是字符串,不是布尔值。
布尔值经常用于记录某个状态,例如:
- 用户是否登录;
- 任务是否完成;
- 数据是否有效;
- 接口调用是否成功。
六、使用 type() 查看数据类型
type() 可以告诉我们一个数据的类型:
user_name = "Bruce"
age = 18
print(type(user_name))
print(type(age))
输出结果:
<class 'str'>
<class 'int'>
目前只需要关注最后的 str 和 int。class 与类的概念会在面向对象阶段详细学习。
type() 主要用于学习和排查问题。实际开发中,不需要为每一个变量都输出类型。
七、变量与字符串的区别
请比较:
user_name = "Bruce"
print(user_name)
print("user_name")
输出为:
Bruce
user_name
原因是:
user_name没有引号,Python 会把它当作变量名,并读取变量保存的数据;"user_name"有引号,Python 会把它当作普通文字直接输出。
这是初学阶段非常重要的区别。
八、变量命名规则
8.1 必须遵守的规则
Python 变量名:
- 可以包含英文字母、数字和下划线;
- 不能以数字开头;
- 不能包含空格、连字符等符号;
- 区分英文字母大小写;
- 不能使用 Python 关键字。
正确示例:
user_name = "Bruce"
age2 = 18
course_count = 8
错误示意:
2age = 18 # 不能以数字开头
user name = "Bruce" # 不能包含空格
user-name = "Bruce" # 不能使用连字符连接单词
错误示意放在文本代码块中,是为了避免它们被误认为可运行的 Python 代码。
8.2 推荐的命名风格
Python 普通变量通常使用蛇形命名法(snake_case):
user_name = "Bruce"
learning_days = 1
is_course_finished = False
蛇形命名法使用小写英文单词,并用下划线连接多个单词。
变量名应该能说明数据的含义。推荐使用 learning_days,不推荐使用 a、x1 这类难以理解的名称。
代码标识符使用英文,注释和教学文档使用中文。这样既符合常见开发习惯,也便于与第三方库和团队代码协作。
九、使用变量进行计算
整数和浮点数可以参与计算:
completed_lessons = 1
new_lessons = 1
total_lessons = completed_lessons + new_lessons
print(total_lessons)
输出:
2
代码执行过程是:
completed_lessons保存整数1;new_lessons保存整数1;- Python 读取两个变量中的整数并相加;
- 计算结果
2保存到total_lessons; print()输出结果。
十、变量可以重新赋值
变量保存的数据可以改变:
learning_days = 1
print(learning_days)
learning_days = 2
print(learning_days)
输出:
1
2
第二次赋值后,再使用 learning_days 时得到的是新数据 2。
Python 变量甚至可以在运行过程中指向不同类型的数据:
value = 10
value = "十"
这种能力称为动态类型。它很灵活,但随意改变变量的数据类型容易让代码难以理解,所以实际开发中应让同一个变量尽量保持含义和类型稳定。
十一、简单的类型转换
有时需要把一种类型的数据转换成另一种类型。
11.1 字符串转换为整数
age_text = "18"
age = int(age_text)
print(age)
print(type(age))
int() 会尝试把合适的内容转换为整数。
11.2 字符串转换为浮点数
price_text = "19.9"
price = float(price_text)
11.3 数字转换为字符串
course_count = 8
course_count_text = str(course_count)
11.4 转换并不总能成功
下面的转换会报错:
int("十八")
因为 Python 不知道应该怎样把中文文字“十八”直接转换成整数。遇到无法转换的数据时,会产生错误。异常处理会在后续课程学习。
十二、使用格式化字符串输出变量
如果想把固定文字和变量数据组合起来,可以使用格式化字符串,简称 f-string:
user_name = "Bruce"
learning_days = 2
print(f"{user_name} 已经学习 Python {learning_days} 天。")
输出:
Bruce 已经学习 Python 2 天。
使用方法:
- 在字符串开始引号前写小写字母
f; - 在字符串中使用花括号
{}包围变量名; - Python 会把花括号中的变量替换成变量保存的数据。
f-string 是现代 Python 中非常常用、易读的字符串格式化方式。
十三、当前电脑上有两个 Python 解释器
第一课练习结果显示:
PowerShell:Python 3.13.5
PyCharm:Python 3.11.15
这说明电脑上安装了不止一个 Python 解释器。它们就像同一种工具的两个版本。
目前的基础代码可以在两个版本中运行,因此不影响学习。以后安装第三方库时,需要注意“库安装到了哪个解释器”,否则可能出现已经安装但代码仍提示找不到的情况。
现阶段请记住:
- 在 PowerShell 中,本项目默认使用
python命令; - 在 PyCharm 中,运行按钮会使用项目设置中选择的解释器;
- 看到不同 Python 版本不必紧张,但提问错误时应保留完整的运行命令和解释器路径。
虚拟环境和依赖管理将在 Python 进阶阶段系统学习。
十四、运行本课示例
在 PowerShell 中执行:
cd D:\Code\Python\01_python基础\1_2_变量与数据类型
python variables_and_types.py
运行时请对照代码和输出,重点观察:
- 变量名与字符串的区别;
- 四种数据类型的
type()结果; - 变量重新赋值前后的变化;
- f-string 如何把变量放入一句话中。
十五、常见错误
15.1 使用了不存在的变量
NameError: name 'user_name' is not defined
常见原因:
- 变量还没有赋值就被使用;
- 变量名拼写错误;
- 大小写不一致。
15.2 忘记给字符串加引号
user_name = Bruce
Python 会把 Bruce 当成变量名,而不是文字。如果这个变量不存在,就会产生 NameError。
正确写法:
user_name = "Bruce"
15.3 把赋值方向写反
18 = age
变量名应写在赋值符号左边,数据或计算表达式写在右边。
15.4 类型不同导致操作失败
"18" + 1
"18" 是字符串,1 是整数。两种不同含义的数据不能直接进行这个加法操作。需要先确认业务目的,再进行合适的类型转换。
十六、课堂练习
打开 practice.py,按照中文注释完成练习。你将创建一组描述自己学习情况的变量,并输出一段学习档案。
运行命令:
python practice.py
本课仍然不提前提供答案。完成后告诉我,我会读取并运行你的代码进行验收。
十七、思考题
age = 18和age = "18"有什么区别?- 为什么
print(user_name)和print("user_name")的结果不同? True与"True"是同一种数据类型吗?- 为什么推荐使用
learning_days,而不是a? - 如果先执行
score = 10,再执行score = 20,最后输出的值是什么?
十八、本课小结
- 变量是程序中保存和引用数据的名称;
=用于把右边的数据赋给左边的变量;str表示字符串,int表示整数,float表示浮点数,bool表示布尔值;type()可以查看数据类型;- 变量名与带引号的字符串含义不同;
- 变量名应清晰,并优先使用蛇形命名法;
- 变量可以用于计算,也可以被重新赋值;
int()、float()和str()可以进行基础类型转换;- f-string 可以清晰地组合固定文字和变量数据。
十九、验收标准
- 能解释变量和赋值的含义;
- 能创建字符串、整数、浮点数和布尔值变量;
- 能使用
type()查看变量类型; - 能判断一个变量名是否符合基本规则;
- 能使用变量完成简单计算;
- 能使用 f-string 输出包含变量的句子;
- 能完成并运行
practice.py; - 能回答五道思考题。