2.2 Python的相关术语
通过上一节,相信读者已经掌握了Python自带IDE——IDLE工具的使用方法,这一节开始介绍Python编程语言的相关知识,在这里我们主要应用IDLE来完成脚本的编写与执行。
2.2.1 变量
很多读者因为上大学的时候没有学好C语言、Fortran等编程语言或者从未接触过编程语言,而对学习一门编程语言充满了恐惧。其实大可不必,当你接触、了解了Python语言后,相信你一定会喜欢它。“不积跬步,无以至千里;不积小流,无以成江海。”在学习一门编程语言的时候,要掌握一些专业术语,就像我们看金庸先生的武侠小说一样,要在绿林混,先得知道他们说的“黑话”是什么。
这一节介绍编程语言中的专业术语。首先,让我们来了解一个专业术语——变量。
从字面理解,变量用来存储一些之后可能会发生变化的值。在Python编程语言中,变量的命名必须是大小写英文字母、数字或下划线(_)的组合,不能以数字开头,并且变量区分大小写。
为变量赋值的语句是变量名称 = 需要被赋的值。下面是几个合法的变量命名并赋值的语句示例。
Teacher='Tony' teacher=123 teacher='王老师' all=1+2 姓名='于涌' _var='123456' No1='964591' Num尾数='未知' |
上述语句在IDLE中的执行结果如图2-8所示。
图2-8 执行结果
上面的语句有一个问题,就是我们不知道其最后的赋值情况是不是符合预期,例如,有的读者对图2-8中前4条语句的执行结果很好奇,变量最后的值到底是什么呢?
我们先简单分析一下这4条语句。首先,应明确地知道这4条语句其实包含了3个变量,即Teacher、teacher和all。这里容易被初学者误解的一个地方就是Teacher和teacher,尽管它们是一个单词,但是由于Python变量是区分大小写的,因此它们是两个不同的变量。其次,all=1+2将1+2表达式赋给了all变量,即将3赋给all。teacher变量第1次被赋值为123,第2次被赋值为“王老师”,所以最后的变量值应该是“王老师”,那么实际的结果是不是这样呢?我们可以用print()函数将这3个变量都输出,看看其值分别是什么。为了便于操作,这里我们将语句放入了test1.py文件(见图2-9左侧)中。
运行后的结果如图2-9右侧所示,是不是与我们预期的完全一致呢?
图2-9 test1.py模块文件的内容与其执行结果
Python编程语言是支持汉字变量和下划线的,所以像姓名、_var、No1、Num尾数这些变量都是允许定义的,我们也可以将这些变量的值输出,如图2-10所示。
图2-10 test2.py模块文件的内容与其执行结果
前面介绍了一些正确的变量命名与赋值,如果我们定义了一些非法的变量,Python会输出一些错误消息吗?下面让我们来看一下,这里假设要创建一个以数字开头的非法变量,如234abc=123456。
如图2-11所示,当定义了一个非法的变量时,在IDLE中会突出显示该变量,并给出“SyntaxError: invalid syntax”错误消息。
图2-11 非法变量的示例
除此之外,不允许使用Python中的关键字(如in、for、continue、break、def等)来命名变量。
这里给出所有的Python关键字,请读者务必记住这35个关键字,包括False、None、True、and、as、assert、async、await、break、class、continue、def、del、elif、else、except、finally、for、from、global、if、import、in、is、lambda、nonlocal、not、or、pass、raise、return、try、while、with、yield。
如果使用这些关键字作为变量的名称,将输出图2-12所示的错误消息。同样,在IDLE中会突出显示变量,并给出“SyntaxError: invalid syntax”错误消息。
图2-12 以关键字作为变量名输出的错误消息
还有一点需要注意,变量名不能包含空格,如a bc=456是非法的。
2.2.2 数据类型
世界万物都具有自己的类型、属性,例如,尽管人类存在着个体的差异,但是我们拥有共同的属性,每个人都有眼睛、耳朵、嘴巴、鼻子、四肢等部位。再以蔬菜里的豆芽菜为例,一般由豆子生出豆芽来,豆芽菜通常由一个大个“脑袋”和一条细长的“尾巴”构成。程序设计语言也由一些不同类型的数据(例如,字符串类型、数值类型、布尔类型等)构成。
1.字符串类型
字符串是由数字、字母、下划线等组成的一串文本。例如,“123456789”“于涌”“Python3.7.0”“你最棒!!!”“_abc1334”“?abcdef1234*”都是合法的字符串类型。有的读者可能会有疑问,“123456789”这不是一个数字吗?对,123456789是一个数字,但是如果把它用单引号或者双引号括起来,它就变成字符串类型了。图2-13展示了关于整型变量和字符串变量的示例。
图2-13 关于整型变量和字符串变量的示例
这里我们应用了一个新的type()函数,它的作用是返回传入参数的类型。
a=123456789 print(type(a)) |
我们先将123456789这个整数赋给了变量a,后输出变量a的类型,返回的结果为<class 'int'>,class是类的意思,而'int'是整型的意思,也就是说,变量a的类型为整型。
b='123456789' print(type(b)) |
接下来,我们又将'123456789'(注意,这里在整数123456789两侧加了单引号)赋给了变量b,后输出变量b的类型,返回的结果信息为<class 'str'>,class是类的意思,而'str'是字符串类型的意思。也就是说,变量b的类型为字符串类型。
c="123456789" print(type(c)) |
最后,我们又将"123456789"(注意,这里在整数123456789两侧加了双引号)赋给了变量c,后输出变量c的类型,返回的结果为<class 'str'>,class是类的意思,而'str'是字符串类型的意思。也就是说,变量c的类型为字符串类型。
从上面我们能看到,'123456789'和"123456789"都是字符串数据类型。同时,字符串数据可以进行拼接操作,即使是两个由数字字符串构成的字符串。
如图2-14所示,如果两个字符串数据相加,它们执行的是拼接操作,如a='123'+'678'的结果为a='123678',b='a12345'+'cccc'结果为b='a12345cccc';如果两个整型数据相加,则执行的是加法操作,如c=123+678的结果为c=801。
图2-14 字符串拼接和整型数据相加
在字符串里有一个需要注意的地方,就是对“\”的处理。
下面给出一道小题目,请说出下面这条语句的输出结果是什么。
print("c:\nows") |
好多读者会说:“当然是c:\nows了。”那么确实如此吗?让我们一起来看一下实际的输出结果,如图2-15所示。
图2-15 包含转义字符的脚本及其输出结果
是不是有些意外?怎么和你的预期不一致呢?这是因为“\n”恰好是换行符,参见表2-1。需要注意的是,在输出、定义、使用字符串变量时,要避免与转义字符组合在一起。当然,除非你已经知道并想达到这种效果。
表2-1经常会用到的转义字符
那么,有什么办法可以正确输出“c:\nows”这个字符串吗?
有两种方法,使用“\\”对“\”进行转义和在包含转义字符的字符串前面加一个“r”。下面让我们看一下这两种方式的输出结果,如图2-16所示。
图2-16 正确输出包含转义字符的字符串的两种方法及其输出结果
如果字符串中的内容非常长,Python是否可以正确输出字符串的内容呢?Python提供了三重引号+内容的方法来解决这个问题。这里我们就以输出王之涣的《登鹳雀楼》为例,Python脚本如下。
poem=""" 登鹳雀楼 白日依山尽,黄河入海流。 欲穷千里目,更上一层楼。""" print(poem) |
如图2-17所示,输出结果完全保留了这首诗的原始风格。
图2-17 长字符串的处理方法及其输出结果
2.数值类型
数值类型主要包括整型和浮点型。例如,123、56789、88、?222、?100等都是整型数。浮点数就是包含小数点的数字,如123.01、?888.88、3.1415926等。
下面举一个整型和浮点型数据的例子。
如图2-18所示,我们可以看到a为整型变量,b为浮点类型变量。c=d=88,相当于c=88和d=88。print(type(c),type(d))会依次输出各个字符串或变量的类型,遇到逗号时会输出一个空格,从输出结果我们也能看到在两个<class 'int'>之间是存在一个空格的。关于浮点数的赋值和输出与此类同,这里就不再详述。
图2-18 整型变量和浮点型变量
我们平时经常会用到和日期、时间相关的一些对象,比如要输出时间戳。有的读者可能对时间戳的概念不是很了解,这里简单地介绍一下。时间戳是指格林尼治时间自1970年1月1日00:00:00至当前时间的总秒数。Python提供了一个calendar和time模块用于格式化日期与时间,时间间隔是以秒为单位的浮点数,其相关脚本和执行结果如图2-19所示,可以看到时间戳的值为1537970218.636964,这确实是一个浮点数。同样,Python也提供了将浮点数转换为日期、时间格式的方法,对这部分内容感兴趣的读者可以了解一下time模块的strftime和localtime方法,这里不再详述。
图2-19 输出时间戳的脚本及其执行结果
3.布尔类型
布尔类型数据对应两个取值,即真或假,真用True来表示,假用False来表示。布尔类型是一个有些特别的数据类型,它可以像整型数一样参与运算,比如print(True+7),print(False+5)。当True和False作为整型数参与运算时,True相当于整数值1,而False相当于整数值0。上面这两条print语句的执行结果如图2-20所示。
图2-20 两条print语句的执行结果
布尔类型多数情况下用于表达式的判断,即当表达式为真时,程序该如何处理,为假时又该如何处理。这里提供一个简单的示例脚本,如图2-21所示。
图2-21 使用布尔类型数据的示例脚本
针对上面的脚本,我们做一个简单的分析。a变量的值为10,c=a-5,即c变量的值应该为10-5,故c变量的值为5,b变量的值为5。所以表达式b==c的值为真(True),于是就输出“b与c的值均为5!”。
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。