学径 LearnPath

CAICP-E · Python 编程基础 / Wiki

变量

给数据起的名字。盒子里的东西可以换。

它是什么

变量 像贴在盒子上的标签。 名字指向某个值。 之后可以用这个名字取出或更新它。

程序要记住很多东西:分数、姓名、是否及格。 如果每次都把数字重写一遍,句子会又长又容易写错。 起一个名字,就能反复使用。

python
score = 95
name = "小明"
ready = True

= 读成「放进去」。 左边是名字。 右边是值。

同一个名字可以换内容。 这正是「变」的意思。

名字从哪来

变量的英文是 variable,来自数学里的「可变量」。

代数课上,人们用字母代表一个可以取不同值的数。 16 世纪末,法国数学家弗朗索瓦·韦达开始系统地用字母写方程。 1637 年,笛卡尔在《几何》里约定:前面的字母 a、b、c 多表示已知,后面的 x、y、z 多表示未知。 今天数学题里满天飞的 x,就从这里来。

编程把这个想法搬进电脑。 盒子可以换里面的东西,标签暂时还叫原来的名字。 所以它不是「永远不变的量」,而是「可以变的量」。

Python 里,名字常用小写加下划线,例如 student_name。 这是大家常约定的写法,不是语法强迫,但一起用会好读很多。

它怎么工作

赋值使用一个等号 =

python
age = 11
age = age + 1
print(age)

先取出旧的 11。 加上 1。 再放回盒子。 最后是 12。

要先赋值,再使用。 还没有的名字直接 print,会变成 NameError。 详见 调试

命名规则:

  • 用小写字母
  • 单词之间用下划线 _
  • 不能以数字开头
  • 不能和 ifforprint 这些关键词抢名字
  • 尽量见名知意

好名字:student_namemath_score。 不好的名字:2nameifs

名字区分大小写。 scoreScore 不是同一个。 初学一律小写,最省心。

变量里可以放不同 类型。 但不要指望名字自动告诉电脑类型。 类型看的是里面的值。

python
x = 3
x = "三"

同一个标签,先装着整数,再装着文字。 Python 允许这样换。 换完以后,能做的事也跟着变。

生活里在哪里

  • 水杯上写「小明」:杯子还是那个杯子,水可以换成茶。
  • 座位牌:位子在,坐的人可以换。
  • 成绩单上的「语文」:科目名不变,分数每次都会变。
  • 游戏角色的生命值:名字叫 HP,数字会减会加。

生活里的标签帮助我们找到东西。 程序里的变量帮助电脑记住东西。

和相近概念的差别

变量是盒子。 数据类型 是盒子里装的是哪一种东西。

= 是放进去。 == 才是问相不相等。 比较请看 比较运算

函数 的参数也是一种名字。 它只在函数干活的那一阵存在。 和外面的同名变量,不一定是同一个盒子。

常量这个词,在数学里表示「不变的数」。 Python 没有单独的常量语法。 有人把不想改的值写成全大写,例如 MAX_SCORE = 100,只是提醒自己别乱改。

常见误会

误会 1:把 = 当成「等于」。

等于比较要写 ==。 一个等号是放进去。

误会 2:数字开头,比如 1place

名字不能以数字开头。 横杠 - 也不行,会被看成减法。

误会 3:名字里有中文,电脑就更懂。

Python 允许中文名字,但不推荐。 键盘、报错、别人的电脑,都更习惯英文和下划线。

误会 4:换了内容,旧的值一定还在某个角落。

标签改指新值以后,旧值如果没人再用,就不会再被这条名字找到。

误会 5:print(score) 会把名字这两个字印出来。

它打印的是盒子里的值。 要打印文字 score,得加引号。

想知道更多

  • 书:潘洪波《小学生 Python 趣味编程》(用「重要的话说三遍」这类情境讲变量)。
  • 书:埃里克·马瑟斯《Python 编程:从入门到实践》(变量和赋值出现在最前面几章,可以和家长一起读)。

未登录时不会保存学习进度