教孩子学Python编程
上QQ阅读APP看书,第一时间看更新

2.1 百变宝盒——理解Python中的变量

回忆一下,当你玩冒险闯关游戏时,人物主角一般都会穿戴各种装备。比如鞋子会增加人物的敏捷度,武器可以增加人物的攻击力,衣服、裤子可以增加人物的防御力,等等。并且,这类游戏有趣的地方在于,人物的装备并不是一成不变的,随着升级、打怪,你可以不断更新装备,这也是此类游戏的有趣之处。不知你有没有想过,游戏中的人物是怎么进行装备更换的?其实,这都是变量的功劳。

2.1.1 理解变量

变量通常被解释为存储数据的符号,但在Python中,我们将其理解为“门牌号”更加合适一些。在生活中,我们需要根据门牌号来找到对应的人家,在Python中我们使用门牌号来找到对应的数据。

打开IDLE集成环境,单击工具栏的File菜单,新建一个Python文件,如图2-1所示。

图2-1 新建文件

之后会弹出一个编辑窗口,我们可以将代码写在这个编辑窗口中,之后再运行,这样就不需要像命令一样一行一行地运行代码了。在其中编写如下代码:

使用Command+S进行保存,之后按F5键运行此文件模块,效果如图2-2所示。

图2-2 运行效果

上面的代码中,a、b、c都是我们所说的变量。在计算机中,每生成一块数据都要占据一定的内存空间,也可以理解为这些内存空间就是数据的家。使用变量这个门牌号,我们可以轻松地访问所需要的数据。例如上面的代码,“Hello”数据存放的内存门牌号就是a,“World”数据存放的内存门牌号就是b。之后,我们在使用a的时候,实际上就会访问数据“Hello”,使用b的时候是一样的道理。上面的代码中,我们最后将a和b变量存放的字符串进行拼接,并给新得到的字符串数据分配了门牌号c。

现在你对变量是不是有了更形象的理解?在Python中变量是没有类型的,但是变量指向的数据是有类型的。例如,上面的代码中,a、b、c变量存放的数据都是字符串类型的。变量无类型,也就是说,你可以先把一个变量当作字符串数据的门牌,后把它换成数值数据的门牌,这样做都没有问题,例如:

帮你解惑

在许多编程语言中,变量都是强制类型的,在声明变量时必须明确变量的类型,并且一旦声明变量,其类型就不可更改,也不可存放非此类型的数据。因此,Python是一种非常灵活的语言,只要你想,可以随时并且任意地修改变量对应的数据,称其为百变宝盒完全恰当。

2.1.2 变量的命名规则

命名是一件小事,却是一件十分重要的事,良好的命名习惯可以让你编写程序的效率更高。不同的编程语言通常有不同的命名规则,在介绍Python变量的命名规则之前,我们先来认识在编程领域中几种流行的变量命名法。

1.匈牙利命名法

匈牙利命名法是一种比较烦琐的命名规范,其遵循:变量名=属性+类型+对象描述。举例来说,在一个教务系统中,如果你要创建一个变量用来引用某位老师的名字,用匈牙利命名法可以如下定义变量:

    m_sz_name = "teacherA"

其中,m表示变量的属性,即这是一个成员变量;sz表示变量的类型,即字符串类型的;name用来描述变量表达的是“姓名”。这种命名方式可以十分直观地了解变量的很多信息。但是对于匈牙利命名法,持反对意见的人很多,认为这种烦琐的命名并没有减少开发者太多疑惑,而且像Python这种无变量类型的语言,这种命名法更加不合适了。

2.驼峰命名法

顾名思义,驼峰命名法指使用单词首字母大写或下画线将变量名进行分割,例如用来引用教师名称的变量可以如下命名:

     TeacherName = "Jaki"
     teacher_name = "Jaki"

驼峰命名法是常用的一种命名规则,其核心在于表明变量的意义,这也是编程中对开发者来说最重要的一点。这种语义明确的命名方式可以极大地提高我们阅读代码的速度,也可以帮助理解代码的含义。驼峰命名法之所以有两种方式,是由于某些语言是大小写不敏感的(也就是说不区分大小写字母),因此需要使用下画线来进行单词分割。

3.帕斯卡命名法(Pascal)

帕斯卡命名法是驼峰命名法的一种变种,其也被称为小驼峰命名法,即变量的首字母小写,之后按照驼峰的规则单词首字母大写,例如:

在Python中,我们通常采用下画线驼峰法进行变量的命名,使用首字母大写的驼峰法进行类的命名(暂时你不用纠结什么是类,后面会学习)。但是有一点需要注意,并不是所有的变量都是公开的。在Python中,我们也可以声明一些私有的变量,私有变量在命名时通常使用下画线开头,例如:

帮你解惑

这里说的公开、私有也是类中的概念。你可以把类简单地理解为一个黑盒子,盒子中放了许多糖果,并且这个黑盒子配对有一个糖果选择遥控,遥控上为你提供了几种糖果,当你选择某一种时,黑盒子就会弹出这种糖果给你,这个遥控上展示的糖果类型就是公开的;当然黑盒子中有可能不仅有这些糖果,里面可能还有其他的东西,但是你通过遥控没有办法将它们取出来,这些东西就是私有的。