![Python自动化开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/781/26846781/b_26846781.jpg)
2.1 变量的命名与使用
变量来源于数学,在计算机语言中能储存计算结果或表示值的抽象概念。变量可以通过变量名设定,大多数情况下,变量是可变的。在计算机编程里面,变量是非常有用的,它对每一段数据都赋给一个简短、易于记忆的名字,这个数据可以是用户输入的数据、特定运算的结果以及程序输出数据等。简而言之,变量是用于跟踪所有数据的简单工具。
Python的变量与其他编程有所区别,如Java和C#,这类编程语言需要定义变量类型才能对变量进行使用。而Python的变量无需定义变量类型,直接对变量赋值即可,Python会根据变量值来自动识别变量类型。
变量类型包含了数据类型,数据类型会在第3章详细介绍,常用变量类型的种类有整型、字符串、浮点型、布尔型、字典和元组列表等。简单地理解,变量可以比作为一个人,而人又分为男人和女人,这里的男人和女人就相当于变量类型,是根据性别的不同进行分类的,而变量类型则是根据变量值的不同进行分类的。
了解了变量和变量类型后,接下来学习Python的变量如何定义及使用。我们在PyCharm下输入以下代码:
![](https://epubservercos.yuewen.com/172986/15289821504504606/epubprivate/OEBPS/Images/aa0197.jpg?sign=1739283566-bv4OZ9vJmjdNQvq9KZYzONf9sQ11PR13-0-6874ad742bc704ebfe6e5d31a6b952a5)
在PyCharm中运行上述代码,查看代码输出结果,如图2-1所示。
![](https://epubservercos.yuewen.com/172986/15289821504504606/epubprivate/OEBPS/Images/aa0198.jpg?sign=1739283566-hnKYF2dWyPCFUmj54O3iYxE9P1r3oGjf-0-5137448543ef0280a9f1f6e0b4beb7e6)
图2-1 输出结果
上述代码中,我们分别定义了4个不同类型的变量,比如变量iVariable,变量首个字母i代表变量类型为整型(int),Variable代表变量。变量命名一般遵从以下规则:
(1)变量名只能是字母(A-Z,a-z)、数字(0-9)或下划线。
(2)第一个字母不能是数字,例如2Variable,这不是一个合法的变量。
(3)不能是Python关键字,例如不能用class这个单词来命名一个变量。
(4)区分大小写,例如iA和ia是两个不同的变量。
理论上,在遵守了上面几条规则的前提下,所命名的变量都是合法的,有时变量命名尽管是合法的,但可读性非常差也不可取,所以,在实际编程中,变量命名往往都有自己的一个命名规范,本书介绍一种常见的命名规范:
(1)一个单词作为变量时,单词首个字母建议大写,并在单词最前方添加变量类型,如上述的iVariable。
(2)如果变量由多个单词组成,每个单词首个字母大写,单词直接拼接并在单词最前方添加变量类型,如iMyVariable。
(3)如果不想在变量前添加变量类型,变量首个字母为小写,若有多个单词拼接,则拼接的单词首个字母为大写,如variable或myVariable。
了解了变量的命名后,下一步我们来介绍变量的使用。从上述代码中,我们将变量值进行输出,这个输出过程就是变量的使用。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。比如执行“print('变量为:', variable)”这一行代码,程序执行时会提示错误信息“NameError: name 'variable' is not defined”,这是由于变量variable没有赋值,所以程序执行过程中并没有创建变量variable而提示variable没有被定义的错误信息。
Python还支持多个变量同时赋值,多变量赋值主要有两种方式,第一种赋值方式是首先创建一个整型对象,其值为1,然后对变量a、b、c进行赋值;第二种赋值方式是分别创建三个不同类型的对象,然后分别赋值给变量d、e、f。代码如下:
![](https://epubservercos.yuewen.com/172986/15289821504504606/epubprivate/OEBPS/Images/aa0210.jpg?sign=1739283566-FwSPjce3rtCUZ2XpFjigXxvbMqVjZVLv-0-f37cc5454b4f2d0694154143fd985352)
变量的命名与使用相对较为简单,读者只需掌握变量的命名规则以及使用方式即可。最后上述提及到不能使用Python关键字作为变量名,Python中共有33个关键字,这些关键字都不可当作变量名来使用,如表2-1所示。
表2-1 Python关键字
![](https://epubservercos.yuewen.com/172986/15289821504504606/epubprivate/OEBPS/Images/aa0375.jpg?sign=1739283566-sZ4VQyJETh5qjODRXfvVJp3lOUgcaKSz-0-b736768813ae0c2147a89522b27752e7)
2.2 变量的深浅拷贝
变量的拷贝是对变量进行数据处理的时候,为了保留数据处理前的变量而重新定义新的变量,简单来说,就是将一个变量的数据复制到另外一个变量里。我们可以通过代码的形式加以说明:
a = 'hello World' b = a print(b) # 程序输出hello World
通过b=a这种方式将字符串“hello World”分别赋值给变量a和变量b。变量的拷贝主要分为浅拷贝和深拷贝,这两种拷贝方式主要用于数据类型为列表和字典的变量。
在第2.1节中,我们提到数据类型主要有整型、字符串、浮点型、布尔型、字典和元组列表等。本节以列表为例,列表可以理解为队列,如现实生活中的排队购票,这个队伍可理解为Python的列表,而队伍中每一个人可理解为列表的元素。
现在将列表以代码的形式表示,并由变量list_1表示,然后通过浅拷贝的方式赋值给list_2,最后修改list_2的某个元素,观察变量list_1和list_2的具体变化。代码如下:
![](https://epubservercos.yuewen.com/172986/15289821504504606/epubprivate/OEBPS/Images/aa0223.jpg?sign=1739283566-Ki6tkX0r9clOzWamGFEQrd7WN3T8hqC6-0-78f806b6e1ee0a839336c29e35813833)
上述代码涉及到列表的使用、功能模块的导入和函数的调用,这些都是Python的基础语法之一,具体的使用说明会在后续的章节中详细讲述。本节主要讲述变量list_1的值为列表或字典的时候,通过list_2=list_1的浅拷贝,当某个变量的列表元素发生变化时,观察另外一个变量的变化情况。上述代码的输出结果如图2-2所示。
![](https://epubservercos.yuewen.com/172986/15289821504504606/epubprivate/OEBPS/Images/aa0236.jpg?sign=1739283566-QUtCplTMLpB6Q9HOA9Y2tBpQY4WEjO0v-0-d62c60fa1053dbf5728b27bf7eb4ff8b)
图2-2 变量浅拷贝的输出结果
从图中可以看到,如果变量a是一个列表或字典,并且通过浅拷贝的方式生成变量b,当其中一个变量发生改变时,另外一个变量也会随之变化。
在上述条件下,如果其中一个变量发生改变,另外一个变量不会随之变化,这样可以使用深拷贝的方式实现。根据上述代码进行简单的修改即可实现,代码如下:
![](https://epubservercos.yuewen.com/172986/15289821504504606/epubprivate/OEBPS/Images/aa0238.jpg?sign=1739283566-sp2oo4zkzyWnHyzK8Q3QAnjzkLQEeTuv-0-fc7d7da92ef6675cab5b8bf554efda15)
将上述代码运行输出,查看变量list_1和变量list_2的变化情况,从输出结果可以看到,当修改变量list_2某个元素的时候,变量list_1不会发生任何变化。输出结果如图2-3所示。
![](https://epubservercos.yuewen.com/172986/15289821504504606/epubprivate/OEBPS/Images/aa0237.jpg?sign=1739283566-RfOG3OsjBc5LqybC0dbCR8SdsVNlbGqP-0-1e7fbee3d86a4cd8b9a8833ad26bb2d0)
图2-3 变量深拷贝的输出结果
本节主要讲述变量深浅拷贝的使用,深浅拷贝只适用于变量值为列表或字典的变量,在日常开发中,开发者常常会由于一时大意而忽略深浅拷贝的区别,导致程序出现错误而无法查明原因,因此读者要明确区分深浅拷贝的差异。