学 Python 到这里,很多人会遇到第一个真正意义上的编程概念。
变量。
这个词看起来有点抽象,也有点像数学课上的东西,所以很多新手一看到就有点发怵。可实际上,变量一点都不神秘。你每天都在用它,只是以前没用代码的方式理解过它。
今天这篇文章,我们就把变量讲透。
你不需要一上来背定义,也不用急着记术语。你只要先明白一件事:
变量,本质上就是给数据起名字。
只要这句话你真正理解了,后面很多内容都会顺很多。
一、先从一个生活场景开始
假设你桌上有三个盒子。
第一个盒子里装着苹果 第二个盒子里装着书 第三个盒子里装着零钱
如果你不给盒子贴标签,过一会儿你可能就忘了哪个盒子装的是什么。可如果你给它们分别贴上名字,比如水果、书本、零钱,那你以后再找东西,就会方便很多。
变量也是一样。
程序运行的时候,会处理很多数据。比如数字、文字、用户输入的内容、计算结果。如果这些数据都没有名字,程序就很难高效地使用它们。
所以,程序员会给这些数据起名字。这个名字,就是变量名。
也就是说,变量不是数据本身。 变量更像是数据的名字,或者说标签。
二、先看第一个变量例子
直接上代码。
name = '小明'
这行代码就是一个最基础的变量定义。
你先别急着管定义这个词,先按人话理解它。
这行代码的意思是:
我把 小明 这段内容,起名叫 name。
后面你想用到这段内容时,不需要每次都重新写 小明,只需要写 name 就可以了。
比如:
name = '小明'print(name)
运行结果会是:
小明
你看,print(name) 并不是把字母 n a m e 打印出来,而是把这个变量里存的内容打印出来。
所以你现在可以先记住:
等号左边是名字 等号右边是内容
三、等号在这里,不是数学里的等于
这是新手最容易混淆的地方之一。
在数学里,等号通常表示左右两边相等。 但在 Python 里,很多时候等号更像是在说:
把右边的内容,交给左边这个名字保存。
比如:
age = 18
这不是在讨论 age 和 18 是否相等。 而是在说,把数字 18 赋值给变量 age。
你可以把它读成:
让 age 这个名字代表 18。
所以这里的等号,更像一个交付动作。 右边交给左边。 不是左右平等对比。
这个思路一定要尽快转过来。因为后面你写代码时,会大量用到这种写法。
四、变量最常见的用法,就是把数据先存起来
为什么要存起来。
因为程序经常会重复使用某个数据。 如果每次都重新写,不仅麻烦,还容易出错。
比如你想输出一位用户的名字三次。
不用变量的话,你可能会这样写:
print('小明')print('小明')print('小明')
这样写当然也能运行,但如果后面你想把 小明 改成 小红,就得改三次。
如果用变量:
name = '小明'print(name)print(name)print(name)
以后你只要改这一处:
name = '小红'
后面所有用到 name 的地方,都会自动跟着变。
这就是变量的价值之一。
不是为了显得专业。 而是为了让代码更好改、更好读、更好维护。
五、变量可以存什么
答案是,很多东西都可以。
先看最常见的几种。
age = 18score = 95price = 99.9
name = '小明'city = '上海'title = 'Python入门'
is_student = Trueis_login = False
你现在先不用深究这些类型的专业名字。现阶段只要知道,变量可以装不同种类的数据就行。
你也可以自己试一下下面这些代码:
age = 20print(age)name = 'Python'print(name)is_ok = Trueprint(is_ok)
运行一下,你会发现变量就像一个个小容器,只不过这个容器有名字。
六、变量名到底该怎么起
这是新手必须早点养成习惯的地方。
变量名不是随便打几个字母就完事了。 你起得越清楚,后面读代码越轻松。
先看一个不太好的例子:
a = '小明'b = 18c = 95
这段代码虽然也能跑,但你过两天再看,很可能已经忘了 a、b、c 分别代表什么。
再看这个版本:
name = '小明'age = 18score = 95
是不是一下就清楚多了。
所以起变量名时,一个最基本的原则就是:
见名知意。
你看到这个名字,大概就能猜到里面装的是什么。
比如:
name 表示姓名age 表示年龄price 表示价格total_score 表示总分user_name 表示用户名
这才是比较像样的变量名。
七、变量名有哪些规则
规则不用背太多,先记住最常用的几条。
第一,变量名可以用字母、数字、下划线组成。
比如这些都可以:
name = 'Tom'age1 = 20user_name = 'admin'
第二,不能以数字开头。
下面这种写法不行:
1name = 'Tom'
正确方式是:
name1 = 'Tom'
第三,不能用 Python 的关键字。
比如 if、for、while 这种有特殊作用的单词,不能拿来当变量名。
比如这样就不行:
if = 10
第四,变量名区分大小写。
这意味着:
name = '小明'Name = '小红'
这是两个不同的变量。
所以刚开始学的时候,尽量别乱用大小写混搭。最稳妥的方式,就是统一使用小写字母,单词之间用下划线隔开。
例如:
user_name = '张三'user_age = 22
这种写法后面你会经常见到。
八、一定要自己运行一遍的实操练习
下面这段代码,你现在就可以新建一个 variable_test.py 文件,亲手运行一下。
name = '小明'age = 18city = '北京'print(name)print(age)print(city)
运行以后,你会看到:
小明18北京
如果你已经会在 VS Code 里运行代码,就直接点右上角运行按钮。 如果你更习惯终端,也可以用:
python variable_test.py
或者 Windows 上用:
py variable_test.py
然后再试着自己改一改。
把 小明 改成你的名字 把 18 改成你的年龄 把 北京 改成你所在的城市
只要你亲手改过一次,你对变量的理解就会比只看文章强很多。
九、变量是可以变化的,这也是它为什么叫变量
变量这个名字,本身就说明了一个特点。
它里面的内容,是可以变的。
比如:
score = 60print(score)score = 80print(score)
运行结果是:
6080
你可以看到,第一次 score 是 60。 后来你又把它改成了 80。 所以第二次输出就变成了 80。
这就是变量最核心的特点之一。
名字还是那个名字。 但里面存的内容可以更新。
这在程序里特别常见。
比如游戏里的生命值会变化 购物车里的总价会变化 用户的登录状态会变化 考试系统里的分数会变化
只要数据可能发生变化,就很适合用变量来表示。
十、变量可以参与计算
变量不只是存着看看。 它更重要的作用,是参与程序运算。
来看一个非常常见的例子。
a = 10b = 20sum_num = a + bprint(sum_num)
运行结果:
30
这段代码做了什么。
先把 10 交给变量 a再把 20 交给变量 b然后把 a + b 的结果,交给 sum_num最后打印 sum_num
你会发现,变量让代码更像在处理真实问题,而不是单纯写死一些数字。
如果你愿意,还可以再试这个:
price = 50count = 3total = price * countprint(total)
输出结果是:
150
这已经非常接近真实业务场景了。
单价乘数量,得到总价。 程序就是这样一步步把现实问题翻译成代码的。
十一、变量和文字一起输出时,怎么写
很多人学到这里,就会想输出一句更完整的话。
比如:
我的名字是小明 我的年龄是18岁
怎么做。
最直接的方法先看这个:
name = '小明'age = 18print('我的名字是', name)print('我的年龄是', age)
运行结果可能是:
我的名字是 小明我的年龄是 18
这种写法很适合新手入门。简单、直观、容易理解。
如果你想让它更自然一点,也可以这样写:
name = '小明'age = 18print(f'我的名字是{name}')print(f'我的年龄是{age}岁')
运行结果:
我的名字是小明我的年龄是18岁
你现在不需要深究 f 的全部用法,先知道它可以把变量内容直接塞进一段文字里,就够用了。后面讲字符串格式化时,我会专门详细讲。
十二、新手最容易犯的几个变量错误
这一段很重要,你很可能马上就会踩到。
第一个错误,变量还没定义就直接用。
比如:
print(name)
如果你前面根本没写过:
name = '小明'
那程序就会报错。因为它根本不知道 name 是谁。
一定记住,先定义,后使用。
第二个错误,把变量名写错了。
比如你定义的是:
user_name = '小明'
后面却写成:
print(username)
这也不行,因为 user_name 和 username 不是同一个名字。
第三个错误,大小写混了。
name = '小明'print(Name)
这也会出问题。因为 name 和 Name 完全不是一个变量。
第四个错误,想当然地用中文符号。
比如括号、引号、逗号这些地方,如果你输入成中文状态下的全角符号,代码就可能报错。刚开始写代码时,尽量把输入法切到英文状态,会省很多麻烦。
十三、给你一个很实用的小练习
别只是看,下面这个练习你最好自己敲一遍。
场景是这样的:
你去买苹果,苹果单价 8 元,一共买了 5 个,请用变量写出总价。
代码可以这样写:
price = 8count = 5total = price * countprint('苹果单价是', price)print('购买数量是', count)print('总价是', total)
运行结果大概会是:
苹果单价是 8购买数量是 5总价是 40
然后你自己再改一下。
把苹果改成橙子 把单价改成 6 把数量改成 9
你会发现,只需要改前面两个变量,整个结果就跟着变了。
这就是变量在实际编程里的价值。
十四、再做一个稍微贴近生活的练习
你可以新建一个文件,叫 my_info.py,然后把下面代码输进去。
name = '张三'age = 20school = 'XX大学'print('大家好,我叫', name)print('我今年', age, '岁')print('我目前在', school, '学习')
接着,把里面的内容全部换成你自己的真实信息,再运行一次。
这个练习虽然简单,但特别有意义。
因为从这里开始,你不再只是照抄例子,而是在用代码表达你自己的信息。 只要迈出这一步,编程就不再只是别人的东西了。
十五、为什么变量是后面所有内容的基础
你现在可能会觉得,变量不就是起个名字吗,好像也没多复杂。
对,它表面看起来就这么简单。 但它几乎会出现在后面所有知识点里。
学输入输出,会用变量保存用户输入 学判断语句,会根据变量内容做分支 学循环,会让变量在循环里不断变化 学函数,会用变量传递参数和接收结果 学文件操作、爬虫、数据分析,变量更是无处不在
所以变量看起来基础,但一点都不小。
你后面学得顺不顺,很大程度上取决于你现在有没有真正理解:
变量不是死记硬背的术语 它就是程序里给数据起名字的方法
一旦你把这层想通,后面很多代码都会变得好理解很多。
十六、今天你至少要亲手完成这三件事
第一件事,自己定义 3 个变量,分别保存姓名、年龄、城市。
第二件事,把这 3 个变量打印出来。
第三件事,再写一个简单计算,比如商品单价乘数量,求总价。
你可以直接参考这份代码:
name = '你的名字'age = 20city = '你的城市'print(name)print(age)print(city)price = 12count = 4total = price * countprint(total)
如果你把这几步都亲手做完,那今天这篇文章就算真正学到了。
十七、写在最后
变量这个概念,刚接触时容易让人觉得抽象。 可一旦你把它放回现实里去理解,它其实特别朴素。
你给一个数据取了个名字。 以后程序就能通过这个名字找到它、使用它、修改它。
说到底,变量并不高深。 它只是程序处理数据时的一种管理方式。
学会变量,不代表你已经很厉害。 但它意味着,你已经正式开始理解程序是怎么组织信息的了。 而这一步,非常关键。
本文小结
变量就是给数据起名字。 等号左边是变量名,右边是要保存的数据。 变量可以保存数字、文字、真假值等不同内容。 变量的内容可以变化,这也是它叫变量的原因。 学变量不能只看,一定要亲手定义、打印、修改、计算几次。
下篇预告
第 7 篇,我们继续往前走。 Python 的基本输入输出:程序如何和人交流
到那时,你写的程序就不只是自己闷头运行了。 它会开始接收用户输入,再把结果反馈出来。