Python自动化测试开发实战 一门能就业的测试课

download: Python自动化测试开发实战 一门能就业的测试课

====html

批改python

自从20世纪90年代初Python言语诞生至今,它已被逐步普遍运用于体系处理使命的处理和Web编程。程序员

Python的开创人为荷兰人吉多·范罗苏姆 [6]  (Guido van Rossum)。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决计开发一个新的脚本阐明程序,做为ABC言语的一种继承。之因此选中Python(大蟒蛇的意思)做为该编程言语的姓名,是取自英国20世纪70年代首播的电视喜剧《蒙提·派森的飞翔马戏团》(Monty Python's Flying Circus)。正则表达式

ABC是由Guido参加规划的一种教育言语。就Guido本身看来,ABC这种言语十分美丽和健壮,是专门为非专业程序员规划的。但是ABC言语并无成功,究其缘由,Guido觉得是其非敞开造成的。Guido决计在Python中防止这一差错。一块儿,他还想结束在ABC中闪现过但不曾结束的东西。shell

就这样,Python在Guido手中诞生了。可以说,Python是从ABC打开起来,首要受到了Modula-3(另外一种至关美丽且健壮的言语,为小型集体所规划的)的影响。并且结合了Unix shellC的习气。编程

Python [7]  现已成为最受欢迎的程序规划言语之一。自从2004年日后,python的运用率呈线性添加。Python 2于2000年10月16日发布,安稳版别是Python 2.7。Python 3于2008年12月3日发布,不完全兼容Python 2。 [6]  2011年1月,它被TIOBE编程言语排行榜评为2010年度言语。 [8] 数组

标识标识网络

由于Python言语的简洁性、易读性以及可扩展性,在国外用Python作科学核算的研究机构日益增多,一些知名大学现已选用Python来教授程序规划课程。例如卡耐基梅隆大学的编程根底、麻省理工学院的核算机科学及编程导论就运用Python言语教育。不少开源的科学核算软件包都供给了Python的调用接口,例如出名的核算机视觉库OpenCV、三维可视化库VTK、医学图画处理库ITK。而Python专用的科学核算扩展库就更多了,例如以下3个十分经典的科学核算扩展库:NumPy、SciPy和matplotlib,它们分别为Python供给了快速数组处理、数值运算以及绘图功用。于是Python言语及其不少的扩展库所构成的开发环境十分合适工程技能、科研人员处理实验数据、制做图表,乃至开发科学核算运用程序。2018年3月,该言语做者在邮件列表上宣告Python 2.7将于2020年1月1日停止支撑。用户假定想要在这个日期以后持续获得与Python 2.7有关的支撑,则需求付费给商业供货商。 [9] dom

下载设备

批改ide

在您初步以前,你的核算机需求Python,但您可能不需求下载它。首要查看(在同级目录下在命令行窗口输入python)有没有设备Python。假定你看到了一个Python阐冥具的照应,那么就能在它的显现窗口中获得一个版别号。通常的版别都可以作到Python的向前兼容。

假定您需求设备, 您不妨下载最近安稳的版别。 就是那个以没有被符号做为alpha或Beta发行的最高的版别。目前最安稳的版别是Python3.0以上 [10] 

假定你运用的操做体系是Windows:其时最安稳的Windows版别下载是"Python 3.9.0 for Windows"

假定你运用的是Mac,MacOS 10.2 (Jaguar), 10.3 (_Panther_) and 10.4 (Tiger)现已集成设备了Python,但是你大约需求设备最近通用的构架(build)。

关于Red Hat,设备python2和python2-devel包。

关于Debian,设备python2.5和python2.5-dev包。

言语特征

批改

风格

Python在规划上坚持了清楚齐截的风格,这使得Python成为一门易读、易保护,并且被大量用户所欢迎的、用途普遍的言语

规划者开发时总的指导思惟是,关于一个特定的问题,只需有一种最好的方法来处理就行了。这在由Tim Peters写的Python格言(称为The Zen of Python)里边表述为:There should be one-- and preferably only one --obvious way to do it. 这正好和Perl言语(另外一种功用类似的高档动态言语)的中心思惟TMTOWTDI(There's More Than One Way To Do It)完全相反。

Python的做者有意的规划限制性很强的语法,使得欠好的编程习气(例如if句子的下一行不向右缩进)都不能通过编译。其间很重要的一项就是Python的缩进规矩。

一个和其余大多数言语(如C)的差别就是,一个模块的间隔,完全是由每行的首字符在这一行的方位来决议的(而C言语是用一对花括号{}来明晰的定出模块的间隔的,与字符的方位毫无关系)。这一点早年引发过争议。由于自从C这类的言语诞生后,言语的语法含义与字符的摆放方法分别开来,早年被觉得是一种程序言语的行进。不过不能否认的是,通过强制程序员们缩进(包含if,for和函数界说等所有需求运用模块的当地),Python确实使得程序越发清楚和漂亮。

与MATLAB

提及科学核算,首要会被提到的多是MATLAB。但是除了MATLAB的一些专业性很强的东西箱还没法被代替以外,MATLAB的大部分经常使用功用都可以在Python世界中找到相应的扩展库。和MATLAB比较,用Python作科学核算有以下长处:

● 首要,MATLAB是一款商用软件,并且价格不菲。而Python完全免费,不少开源的科学核算库都供给了Python的调用接口。用户可以在任何核算机上免费设备Python及其绝大多数扩展库。

● 其次,与MATLAB比较,Python是一门更易学、更谨慎的程序规划言语。它能让用户编写出更易读、易保护的代码。

● 毕竟,MATLAB首要专一于工程和科学核算。但是即使在核算领域,也经常会遇到文件处理、界面规划网络通讯等各类需求。而Python有着丰盛的扩展库,可以容易结束各类高档使命,开发者可以用Python结束完好运用程序所需的各类功用。

规划定位

Python的规划哲学是“典雅”、“明晰”、“简略”。于是,Perl言语中“老是有多种方法来作同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来作一件事”。在规划Python言语时,假定面临多种挑选,Python开发者通常会回绝花俏的语法,而挑选明晰的没有或许不多有歧义的语法。由于这种规划观念的差别,Python源代码通常被觉得比Perl具备更好的可读性,并且可以支撑大规划的软件开发。这些准则被称为Python格言。在Python阐冥具内做业import this可以得到完好的列表。

Python开发人员尽可能避开不成熟或许不重要的优化。一些针对非重要部位的加快做业速度的补丁通常不会被合并到Python内。因此不少人觉得Python很慢。不过,依据二八规律,大多数程序对速度要求不高。在某些对做业速度要求很高的情况,Python规划师倾向于运用JIT技能,或许用运用C/C++言语改写这部分程序。可用的JIT技能是PyPy

Python是完全面向政策的言语。函数、模块、数字、字符串都是政策。并且完全支撑继承、重载、派生、多继承,有益于加强源代码的复用性。Python支撑重载运算符和动态类型。相关于Lisp这种传统的函数式编程言语,Python对函数式规划只供给了有限的支撑。有两个规范库(functools, itertools)供给了Haskell和Standard ML中久经考验的函数式程序规划东西。

虽然Python可能被粗略地分类为“脚本言语”(script language),但实际上一些大规划软件开发计划例如ZopeMnetBitTorrentGoogle也普遍地运用它。Python的支撑者较喜欢称它为一种高档动态编程言语,缘由是“脚本言语”泛指仅做简略程序规划使命的言语,如shellscript、VBScript等只能处理简略使命的编程言语,并不能与Python混为一谈。

Python自身被规划为可扩展的。并不是所有的特性和功用都集成到言语中心。Python供给了丰盛的API和东西,以便程序员可以轻松地运用C言语C++、Cython来编写扩展模块。Python编译器自身也可以被集成到其它需求脚本言语的程序内。于是,不少人还把Python做为一种“胶水言语”(glue language)运用。运用Python将其余言语编写的程序进行集成和封装。在Google内部的不少项目,例如Google Engine运用C++编写功用要求极高的部分,而后用Python或Java/Go调用相应的模块。《Python技能手册》的做者马特利(Alex Martelli)说:“这很难讲,不过,2004 年,Python 已在Google 内部运用,Google 召募许多 Python 高手,但在这以前就已决议运用Python,他们的意图是 Python where we can, C++ where we must,在控制硬件的场合运用C++,在快速开发时分运用 Python。”

实施

PythonPython

Python在实施时,首要会将.py文件中的源代码编译成Python的byte code(字节码),而后再由Python Virtual Machine(Python虚拟机)来实施这些编译好的byte code。这种机制的根柢思惟跟Java,.NET是共同的。但是,Python Virtual Machine与Java或.NET的Virtual Machine不一样的是,Python的Virtual Machine是一种更高档的Virtual Machine。这儿的高档并非通常含义上的高档,不是说Python的Virtual Machine比Java或.NET的功用更健壮,而是说和Java 或.NET比较,Python的Virtual Machine间隔实在机器的间隔更远。或许可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。根据C的Python编译出的字节码文件,通常是.pyc格局。除此以外,Python还可以以交互方式做业,比方干流操做体系Unix/Linux、Mac、Windows都可以直接在命令方式下直接做业Python交互环境。直接下达操做指令便可结束交互操做。

根柢语法

批改

PythonPython

Python的规划政策之一是让代码具备高度的可阅读性。它规划时尽可能运用其它言语经常运用的标点符号和英文单字,让代码看起来整齐漂亮。它不像其余的静态言语如C、Pascal那样需求重复书写声明句子,也不像它们的语法那样经常有特别情况和意外。

Python开发者有意让违反了缩进规矩的程序不能通过编译,以此来强制程序员养成出色的编程习气。并且Python言语运用缩进标明句子块的初步和退出(Off-side规矩),而非运用花括号或许某种关键字。添加缩进标明句子块的初步,而减小缩进则标明句子块的退出。缩进成为了语法的一部分。例如if句子:python3

1

2

3

4

5

age = int(input("请输入你的年纪: "))

if age < 21:

    print("你不能买酒。")

  print("不过你能买口香糖。")

print("这句话在if句子块的外面。")

依据PEP的规定,有必要运用4个空格来标明每级缩进。运用Tab字符和其它数意图空格虽然都可以编译通过,但不符合编码规范。支撑Tab字符和其它数意图空格仅仅是为兼容很旧的的Python程序和某些有问题的批改程序。

控制句子

if句子,当条件创建时做业句子块。经常与else, elif(至关于else if) 协做运用。

for句子,遍历列表、字符串、字典、调集等迭代器,依次处理迭代器中的每一个元素。

while句子,当条件为真时,循环做业句子块。

try句子,与except,finally协做运用途理在程序做业中呈现的反常情况。

class句子,用于界说类型

def句子,用于界说函数和类型的方法。

pass句子,标明此行为空,不做业任何操做。

assert句子,用于程序调试阶段时测试做业条件是否知足。

with句子,Python2.6日后界说的语法,在一个场景中做业句子块。比方,做业句子块前加密,而后在句子块做业退出后解密。

yield句子,在迭代器函数内运用,用于回来一个元素。自从Python 2.5版别日后。这个句子变成一个运算符。

raise句子,制做一个差错。

import句子,导入一个模块或包。

from … import句子,从包导入模块或从模块导入某个政策。

import … as句子,将导入的政策赋值给一个变量。

in句子,判别一个政策是否在一个字符串/列表/元组里。

表达式

Python的表达式写法与C/C++类似。只是在某些写法有所不一样。

首要的算术运算符与C/C++类似。+, -, , /, //, *, ~, %分别标明加法或许取正、减法或许取负、乘法、除法、整除、乘方、取补、取余。

Python运用and, or, not标明逻辑运算。

is, is not用于比较两个变量是不是同一个政策。in, not in用于判别一个政策是否归于别的一个政策。

Python支撑“列表推导式”(list comprehension),比方核算0-9的平方和:

1

2

 sum(x * x for x in range(10))

285

Python运用lambda标明匿名函数。匿名函数体只能是表达式。比方:

1

2

3

 add=lambda x, y : x + y

 add(3,2)

5

Python运用y if cond else x标明条件表达式。意思是当cond为真时,表达式的值为y,否则表达式的值为x。至关于C++和Java里的cond?y:x。

Python差别列表(list)和元组(tuple)两种类型。list的写法是[1,2,3],而tuple的写法是(1,2,3)。可以改动list中的元素,而不能改动tuple。在某些情况下,tuple的括号可以省掉。tuple关于赋值句子有特别的处理。于是,可以一块儿赋值给多个变量,比方:

1

 x, y=1,2 # 一块儿给x,y赋值,毕竟效果:x=1, y=2

特别地,可以运用如下这种方法来交流两个变量的值:

1

 x, y=y, x #毕竟效果:y=1, x=2

Python运用'(单引号)和"(双引号)来标明字符串。与Perl、Unix Shell言语或许Ruby、Groovy等言语不相同,两种符号效果相同。通常地,假定字符串中呈现了双引号,就运用单引号来标明字符串;反之则运用双引号。假定都没有呈现,就依我的喜爱挑选。呈如今字符串中的(反斜杠)被阐明为特别字符,比方n标明换行符。表达式前加r指示Python不阐明字符串中呈现的。这种写法通常用于编写正则表达式或许Windows文件途径。

Python支撑列表切开(list slices),可以得到完好列表的一部分。支撑切开操做的类型有str, bytes, list, tuple等。它的语法是...[left:right]或许...[left:right:stride]。假定nums变量的值是[1, 3, 5, 7, 8, 13, 20],那么下面几个句子为真:

nums[2:5] == [5, 7, 8] 从下标为2的元素切开到下标为5的元素,但不包含下标为5的元素。

nums[1:] == [3, 5, 7, 8, 13, 20] 切开到毕竟一个元素。

nums[:-3] == [1, 3, 5, 7] 从最初步的元素一向切开到倒数第3个元素。

nums[:] == [1, 3, 5, 7, 8, 13, 20] 回来所有元素。改动新的列表不会影响到nums。

nums[1:5:2] == [3, 7] 从下标为1的元素切开到下标为5的元素,且步长为2。

函数

Python的函数支撑递归、默许参数值、可变参数,但不支撑函数重载。为了加强代码的可读性,可以在函数后书写“文档字符串”(Documentation Strings,或许简称docstrings),用于阐明函数的效果、参数的类型与含义、回来值类型与取值规划等。可以运用内置函数help()打印出函数的运用协助。比方:

def randint(a, b):

... "Return random integer in range [a, b], including both end points."...

help(randint)

Help on function randint in module __main__:

randint(a, b)

Return random integer inrange[a, b], including both end points.

政策的方法

政策的方法是指绑定到政策的函数。调用政策方法的语法是instance.method(arguments)。它等价于调用Class.method(instance, arguments)。当界说政策方法时,有必要显式地界说第一个参数,通常该参数名都运用self,用于访问政策的内部数据。这儿的self至关于C++, Java里边的this变量,但是咱们还可以运用任何其它合法的参数名,比方this 和 mine 等,self与C++,Java里边的this不完全相同,它可以被看做是一个习气性的用法,咱们传入任何其它的合法名称都行,比方:

class Fish:

    def eat(self,food):

        if food is not None:

        self.hungry=False

class User:

    def __init__(myself,name):

        myself.name=name

结构Fish的实例:

f=Fish()

如下两种调用方法是等价的:

Fish.eat(f,"earthworm")

f.eat("earthworm")

u=User('username')

print(u.name)

Python知道一些以“__”初步并以“__”完毕的特别方法名,它们用于结束[运算符重载]和结束多种特别功用。

类型

Python选用动态类型体系。在编译的时分,Python不会查看政策是否具备被调用的方法或许特色,而是直至做业时,才作出查看。因此操做政策时可能会抛出反常。不过,虽然Python选用动态类型体系,它一块儿也是强类型的。Python阻止没有明晰界说的操做,比方数字加字符串。

与其它面向政策言语相同,Python允许程序员界说类型。结构一个政策只需求像函数相同调用类型便可,比方,关于前面界说的Fish类型,运用Fish()。类型自身也是特别类型type的政策(type类型自身也是type政策),这种特别的规划允许对类型进行反射编程。

Python内置丰盛的数据类型。与Java、C++比较,这些数据类型有效地减小代码的长度。下面这个列表简要地描绘了Python内置数据类型(适用于Python 3.x):

相关文章
相关标签/搜索