Python从入门到精通
上QQ阅读APP看书,第一时间看更新

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规范中定义了常量的命名规范为大写字母和下划线组成,但是在实际项目中,常量首次赋值后,还是可以被其他代码修改。