Python的相关术语——软件接口测试实战详解(8)

发表于:2021-5-25 09:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:于涌 马林 张林丰    来源:51Testing软件测试网原创

  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软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号