2.2 Python中的变量
2.2.1 保留字与标识符
在学习变量之前,先了解一下什么是保留字和标识符。
1.保留字
保留字是Python语言中已经被赋予特定意义的一些单词,开发程序时,不可以把这些保留字作为变量、函数、类、模块和其他对象的名称来使用。在表2.1中看到的if和and就是保留字。Python语言中的保留字如表2.1所示。
表2.1 Python中的保留字
注意
Python中所有保留字是区分字母大小写的。例如,if是保留字,但是IF就不属于保留字,如图2.14所示。
Python中的保留字可以通过在IDLE中输入以下两行代码查看。
01 import keyword 02 keyword.kwlist
图2.14 Python中的保留字区分字母大小写
执行结果如图2.15所示。
图2.15 查看Python中的保留字
常见错误:如果在开发程序时,使用Python中的保留字作为模块、类、函数或者变量等的名称,如下面代码为使用Python保留字if作为变量的名称:
01 if = "坚持下去不是因为我很坚强,而是因为我别无选择" 02 print(if)
运行时则会出现如图2.16所示的错误提示信息。
图2.16 使用Python保留字作为变量名时的错误信息
2.标识符
标识符可以简单地理解为一个名字,比如每个人都有自己的名字,它主要用来标识变量、函数、类、模块和其他对象的名称。
Python语言标识符命名规则如下:
(1)由字母、下划线“_”和数字组成,并且第一个字符不能是数字。目前Python中只允许使用ISO-Latin字符集中的字符A~Z和a~z。
(2)不能使用Python中的保留字。
例如,下面是合法的标识符:
USERID name model2 user_age
下面是非法标识符:
注意
Python的标识符中不能包含空格、@、%和$等特殊字符。
(3)区分字母大小写。在Python中,标识符中的字母是严格区分大小写的,两个同样的单词,如果大小写格式不一样,所代表的意义是完全不同的。例如,下面3个变量是完全独立、毫无关系的,就像3个长得比较像的人,彼此之间都是独立的个体。
(4)Python中以下划线开头的标识符有特殊意义,一般应避免使用相似的标识符。
以单下划线开头的标识符(如_width)表示不能直接访问的类属性,另外,也不能通过from xxx import *导入;
以双下划线开头的标识符(如__add)表示类的私有成员;
以双下划线开头和结尾的是Python里专用的标识,例如,__init__()表示构造函数。
说明
在Python语言中允许使用汉字作为标识符,如“我的名字="明日科技"”,在程序运行时并不会出现错误(如图2.17所示),但建议读者尽量不要使用汉字作为标识符。
图2.17 使用汉字作为标识符
2.2.2 理解Python中的变量
在Python中,严格意义上变量应该称为“名字”,也可以理解为标签。当把一个值赋给一个名字(如把值“学会Python还可以飞”赋给python)时,python就称为变量。在大多数编程语言中,都把这称为“把值存储在变量中”。意思是在计算机内存中的某个位置,字符串序列“学会Python还可以飞”已经存在。你不需要准确地知道它们到底在哪里。只需要告诉Python这个字符串序列的名字是python,然后就可以通过这个名字来引用这个字符串序列了。这个过程就像上门取快递一样,内存就像一个巨大的货物架,在Python中使用变量就像是给快递盒子加标签,如图2.18所示。
图2.18 货物架中贴着标签的快递
你的快递存放在货物架上,上面附着写有你名字的标签。当你来取快递时,并不需要知道它们存放在这个大型货架的具体哪个位置。只需要提供你的名字,快递员就会把你的快递交还给你。实际上,你的快递可能并不在原先所放的位置。不过快递员会为你记录快递的位置。要取回你的快递,只需要提供你的名字。变量也一样,你不需要准确地知道信息存储在内存中的哪个位置,只需要记住存储变量时所用的名字,再使用这个名字就可以了。
2.2.3 定义变量
在Python中,不需要先声明变量名及其类型,直接赋值即可创建各种类型的变量。需要注意的是,对于变量的命名并不是任意的,应遵循以下几条规则。
变量名必须是一个有效的标识符;
变量名不能使用Python中的保留字;
慎用小写字母l和大写字母O;
应选择有意义的单词作为变量名。
为变量赋值可以通过等号“=”来实现。语法格式为:
变量名 = value;
例如,创建一个整型变量,并为其赋值为1024,可以使用下面的语句。
number = 1024 # 创建变量number并赋值为1024,该变量为数值型
这样创建的变量就是数值型的变量。如果直接为变量赋值一个字符串值,那么该变量即为字符串类型,如下面的语句。
nickname = "碧海苍梧" # 字符串类型的变量
另外,Python是一种动态类型的语言,也就是说,变量的类型可以随时变化。例如,在IDLE中,创建变量nickname,并赋值为字符串“碧海苍梧”,然后输出该变量的类型,可以看到该变量为字符串类型,再为变量赋值为数值1024,并输出该变量的类型,可以看到该变量为整型。执行过程如下:
说明
在Python语言中,使用内置函数type()可以返回变量类型。
在Python中,允许多个变量指向同一个值。将两个变量都赋值为数字2048,再分别应用内置函数id()获取变量的内存地址,将得到相同的结果。执行过程如下所示。
01 >>> no = number = 2048 02 >>> id(no) 03 50766992 04 >>> id(number) 05 50766992
说明
在Python语言中,使用内置函数id()可以返回变量所指的内存地址。
注意
常量就是程序运行过程中,值不能改变的量,比如现实生活中的居民身份证号码、数学运算中的π值等,这些都是不会发生改变的,它们都可以定义为常量。在Python中,并没有提供定义常量的保留字。不过在PEP 8规范中定义了常量的命名规范为大写字母和下划线组成,但是在实际项目中,常量首次赋值后,还是可以被其他代码修改。