Python
Python测试开发实战
Python编程基础
蚂蚁金服:Java 阿里集团:Java,Python 腾讯云:Python 字节:python,go,php
pycharm快捷指令
ctrl + alt + s :打开软件设置
ctrl + d :复制当前行代码
shift + alt +上\下 :将当前行代码上移或下移
ctrl + shift +f10 :运行当前代码文件
shift + f6 :重命名文件
ctrl + a :全选
ctrl + c\v\x :复制、粘贴、剪切
ctrl + f :搜索
Python环境搭建
Python语⾔是⾯向对象的编程语⾔,也是函数式的编程语⾔。Python主要应⽤于测试开发⼯具应⽤开发,数据分析,机器学习(PySpark),⽹络爬⾍,WEB开发和服务端的开发。应⽤于物联⽹等业务。Python提供了很多优秀的第三⽅的框架和库,⽐如全栈WEB框架Django,轻量级WEB框架Flask,异步框架FastApi,以及AsyncioIO等。在各个互联⽹公司的招聘中,Python编程语⾔是测试开发必备的开发语⾔之⼀,在腾讯云,阿⾥以及其他互联⽹⼤⼚,Python是测试开发⼯程师最热⻔的语⾔之⼀(当然,还有Go和Java)。
在Mac和Windows的系统中,到官⽅地址:https://www.python.org/downloads/。下载最新的版本,也就事 Python3.9的版本。下载成功后,点击进⾏安装,直接下⼀步下⼀步的安装,安装成功后,需要配置环境变量,具体如下:
Mac:
PATH=”/Library/Frameworks/Python.framework/Versions/3.9/bin:${PATH}” export PATH
特别注意,在Windows的安装过程中,需要选择添加到path的环境变量,这样安装程序会自动安装pip和 setuptools的。pip是⽤来安装第三⽅的库,setuptools是第三⽅⼯具的管理集合。
Python解释器本质
安装完python的解释器后,只要编写的符合python语⾔的规范,都是能够被解析的,并不在乎到底是否后缀 是.py,⻅案例代码:
print(“Hello World”),⽂件名称是:index.adegh,⻅python解释器解析后执⾏的结果,它会输出:Hello World $ python3 index.adegh
Hello World
我们也可以简单的写⼀个函数,再次来看Python解释器的解析,⽂件名称为index.aaa,⽂件index.aaa的内容为:
在编程语⾔中,为了更加规范,python语⾔就以.py的后缀来编写,java语⾔就以.class,其他语⾔也是如此。在 Python语⾔中,为了更好的编写代码,建议使⽤IDE为Pycharm,下载地址为:https://www.jetbrains.com/pych arm/,当然也可以使⽤其他的IDE的⼯具,建议使⽤Pycharm。
⼀切皆对象
设计核心思想:一切皆对象
python是函数式编程语言,同时又是面向对象的编程语言。
在Python中,⼀切皆对象,这个对象可以值的是⼀个变量,也可以是⼀个函数或者是⼀个类。因为有了⼀切皆对 象,所以也就有了后续的函数的形式参数也可以是函数以及装饰器的⾼阶函数
Python编码与解码详解
在Python语⾔中,由于历史的原因,存在Python2和Python3的不同版本的发展和历史遗留问题,所以也就产⽣了 很多的歧义,⽐如编码问题,类的多继承等问题。但是总的来说,Python在经历了⼗九年的发展,已经是⼀个⾮常 成熟,具备很成熟的⽣态环境和企业级的市场,也是程序员必备的技能之⼀。Python的默认编码是ascll,Python3 的默认编码是unicode。计算机最早是美国⼈发明的,所以最开始只有ascll的编码,但是语⾔全球化的发展趋势是 不可避免的,为了统⼀全球的编码,也就有了unicode的编码,很遗憾的是unicode是以牺牲性能作为代价的,它 占⽤空间⽐ascll的空间多⼀倍,这就导致在传属空间上会导致性能的损耗,所以为了解决这个问题,就有了utf-8的 编码,它是把⼀个unicode字符根据不同的数字⼤⼩编码成1-6个字节。 在计算机的内存中,统⼀使⽤unicode的编 #!/usr/bin/env python #!coding:utf-8 str1=”⽆涯你好” def func(): return ‘Python是世界上最好的语⾔’ class Fun(object): def init(self): pass def show(self): return ‘学习Python,改变世界!’ objStr=str1 objFunc=func objClass=Fun print(‘字符串类型:’,type(objStr)) print(‘函数类型:’,type(objFunc)) print(‘类类型:’,type(objClass)) print(‘字符串对象:{0},函数对象:{1},类对象:{2}’.format(objStr,objFunc(),objClass().show())) 码,如果需要把内存的数据保存到硬盘或者是传属到另外⼀个地⽅,就需要转为utf-8的编码,但是从硬盘某地⽅读 取⽂件内容,就会把utf-8的编码转为unicode的编码存储到内存中。⽐如针对⽂件的编辑操作,读取的过程其实就 是utf-8转为unicode的过程,⽽保存的过程就是unicode转为utf-8的过程。
在Python2中,对str和bytes的两种数据类型拆分的是⾮常不清晰,所以在Python3中,对这两种的数据类型做了明确的拆分。所以我们可以这样说:
编码:就是把str的数据类型转为bytes的数据类型的过程,使⽤到的关键字是encode
解码: 把bytes的数据类型转为str的数据类型的过程,使⽤到的关键字是decode
解码
实战练习
爬虫古诗文网的信息,加上decode(‘utf-8’)则不会显示乱码
Python变量详解
所谓变量我们可以简单的解释为:把程序运算过程中的临时结果集数据存储到内存⾥⾯,以备后⾯的代码继续调 ⽤。变量在我们定义的时候,它并不会占⽤内存空间,在我们调⽤后,变量的⽣命周期也就结束,我们可以使⽤id 关键字来查看它的内存地址。
变量的规则需要遵守如下⼏点,具体如下:
1、变量只能是字⺟,数字,和下划线
2、变量名的第⼀个字符不能是数字
3、如果变量名称是多个字符串,建议使⽤驼峰式的命名规则
4、定义变量名称尽量的通俗易懂,⼀⾔以蔽之。
Python中字符串格式化实战
# 查看一个对象的数据类型,使用的关键字是type print(type(name)) print(type(age))
输出结果是
Python中控制流与逻辑判断
在Python⾥⾯,控制流我们会使⽤到For和While,判断主要值的是if,下⾯通过具体的案例来演示下逻辑判断的部分:
''' 逻辑判断 else if ''' #所有输入的,都是字符串的数据类型:int()--->把字符串强制的转为int的数据类型 score=int(input('输入学生成绩:\n')) if score>=90: print('优秀') elif score>=80 and score<90: print('良好') elif score>=70 and score<80: print('还好') elif score>=60 and score<70: print('及格') else: print('不及格')
结合案例来演示循环的继续和终⽌,案例代码如下:
while True
break
#while 循环 while True: score = int(input('输入学生成绩:\n')) if score >= 90: print('优秀') elif score >= 80 and score < 90: print('良好') elif score >= 70 and score < 80: print('还好') elif score >= 60 and score < 70: print('及格') elif score==100: print('满分') #继续循环 continue else: print('不及格') #跳出循环 break
for循环
#for循环 str1="零基础测试开发" for it in str1: print(it)
enumerate()索引
#enumerate()--->得到对象的索引信息 str1="零基础测试开发" for index,it in enumerate(str1): print(index,it)
### 字符串的格式化实战 ```python ''' 字符串的格式化 ''' #%s name="bahawood" #%d age=18 #%f salary=8900.50 idBoy=True print('我的姓名:%s,我的年龄:%d,我的薪资:%f'%(name,age,salary)) print('我的姓名:{0},我的年龄:{1},我的薪资:{2}'.format(name,age,salary)) print('我的姓名:{name},我的年龄:{age},我的薪资:{salary}'.format(name=name,age=age,salary=salary)) ```
%f保留六位小数,
如果采用format则只会保留数据的完整格式
Python中字符串详解
小写变大写
str1="hello" #小写---》大写 print(str1.upper()) print(str1.upper().isupper())
大写转小写
tr2="HELLO" #大写---》小写 print(str2.lower()) print(str2.lower().islower())
str1="hello" #以什么开头 print(str1.startswith('h')) #以什么作为结尾 print(str1.endswith('l')) #获取字符串里面的元素索引:线性查找方式(找到第一个就不会往下继续找了) print(str1.index('l')) #获取字符串长度 print(len(str1)) #字符串的替换 print(str1.replace('ello','i,Python'))
#取消空格 print(str1.strip()) str2="go,java,python" str_list=str2.split(',') print(str_list,type(str_list)) #字符串合并:把列表转为字符串过程,根据什么符号来进行分隔 list_str='--'.join(str_list) print(list_str,type(list_str))
#返回的是索引,查找,空格也算 print(str1.find('l')) #字符串的循环 for item in str1: print(item)
Python数据结构
Python中列表实战
所谓列表,我们可以简单的把它理解为按照索引存放各种集合,在列表中,每个位置代表⼀个元素。在Python中, 列表的对象⽅法是list类提供的,列表是有序的。列表的特点具体如下:
-
可存放多个值
-
按照从左到右的顺序定义列表元素,下标从0开始顺序访问
-
列表是有序的
-
列表也是可变化的,也就是说可以根据列表的索引位置来修改列表的值
list1=["go","java","python"] #查看list方法 # print(dir(list1)) ''' 添加: append:默认把添加的元素添加到最后一位 insert:按照索引添加 ''' list1.append("C") print(list1) list1.insert(0,'C++') //数字是代表添加到索引第几位,后面引号里面是要插入的内容 print(list1)
list1[0]="GO语言" ///直接按照索引重命名 print(list1) for item in list1: print(item)
‘’‘ 删除: pop():删除最后一位并且返回结果 remove:删除指定的任何一个元素 ''' print(list1.pop()) //会返回被删除的数据是什么 print(list1) list1.remove("java") print(list1)
#copy list2=list1.copy() ///不加copy也一样,相当于直接赋值 print(list2) #追加 list3=[1,2,3] list1.extend(list3) ///给列表1添加上列表上的内容 print(list1) #清空 list1.clear() ///清空列表中所有的内容,成为空列表 print(list1)
#索引是多少 print(list1.index("java")) #相同元素的个数,这里在列表1中再加一个“go”,所以执行出来的结果是2 print(list1.count("go"))
list1=['C++','java','go','python'] #reverse反转 list1.reverse() print(list1) #sort排序 list1.sort() print(list1)
#列表嵌套 list1=[1,"python",True,10000,["english","chinese",[9,5,7,1]]] print(list1[2]) print(list1[4][0]) print(list1[4][2][3])
''' 列表的切片:获取列表中发指定范围的元素信息 ''' list1=[1,3,5,7,9,11,13,15,17,19] #开始与结束,是包含了开始,不包含结尾:取出3,5,7 print(list1[1:4]) #获取最后一个元素信息:-1代表最后一个元素 print(list1[-1]) #获取7-19,:后面不跟则代表所有 print(list1[3:]) #获取所有的 print(list1[:]) print(list1) #获取索引:enumerate for index,it in enumerate(list1): print(index,it)
''' 元组:tuple 当元组内只有一个元素时,必须加上逗号,要不就表示的是字符串 列表与元组的区别? 1、列表是可变的,元组是不可变的,列表的可变指的是列表可以添加新的元素,也可以删除 列表里面有的元素信息,而元组是不能增加新的元素,也不能对已有的元素删除 ‘count’,'index' ''' tuple1=[1,3,5] # print(dir(tuple1)) print(tuple1.index(5)) print(tuple1.count(3)) tuple2=('a') tuple3=('a',) print(tuple2,type(tuple2)) print(tuple3,type(tuple3))
''' 字典:dict 字典是⽆序的,这是字典的⼀个特性,它的第⼆个特性是字典可以使⽤key-value的⽅式来存储数据, ''' dict1={'name':'ghj','age':'18','work':'testdev'} #添加新的 dict1['sex']='男' print(dict1) #修改 dict1['name']='郭华杰' print(dict1) #删除 del dict1['name'] print('删除后的字典:\n',dict1) #获取 print(dict1['work']) print(dict1.get('work'))
#获取所有的key for baha in dict1.keys(): print(baha) #获取所有的values for baha in dict1.values(): print(baha) #追加 dict1.update(dict2) print(dict1)
#字典的循环 for key,value in dict1.items(): print(key,value)
#字典的排序:sorted() ''' key value list_key=['name',''] list_value=[] [key,value] [['name,'key','work'],['ghj','18','testdev']] ''' print(dict(sorted(dict1.items(),key=lambda item:item[0]))) ///根据key排序 print(dict(sorted(dict1.items(),key=lambda item:item[1]))) ///根据value排序,如果数据类型报错,则把数字改成字符串,让所有的value统一数据格式
data={'status':0,'msg':'ok','datas':[ {'name':'lssi1','age':18}, {'name':'lssi2','age':23}, {'name':'lssi3','age':36}, {'name':'lssi4','age':28}, {'name':'lssi5','age':58}, {'name':'lssi6','age':98}, {'name':'lssi7','age':78}, ]} #获取所有的姓名,年龄并且放在一个列表中 print(data['datas']) #定义了一个列表 ages=list(),把年龄单独拿出来放在一个列表里 ages=[] for item in data['datas']: ages.append(item['age']) print(ages)
Python中集合实战
坦⽩的说,集合是⼀个数学概念,可以由⼀个或者是多个确定的元素构成的整体。我们最常⽤的就是集合⾥⾯的交集,也就是获取两个对象⾥⾯的共同值
list1=['Pythom','Allure','Pytest'] list2=['Java','TestNG','Allure'] print('得到两个对象里面的共同值:\n',set(list1)&set(list2)) print('得到两个集合对象里面的不同值:\n',set(list1)^set(list2))
Python数据结构实战
字符串与列表互转
#字符串转列表 str2="go,java,python" str_list=str2.split(',') print(str_list,type(str_list)) #列表转字符串 list1=['a','b','c'] list_str=','.join(list1) print(list_str,type(list_str))
#列表与元组互转 #列表转元组 list1=[1,2,3] list_tuple=tuple(list1) print(list_tuple,type(list_tuple)) #元组转列表 tuple_list=list(list_tuple) print(tuple_list,type(tuple_list)) #当元组内只有一个元素时,必须加上逗号,要不就表示的是字符串 tuple2=('a') tuple3=('a',) print(tuple2,type(tuple2)) print(tuple3,type(tuple3))
#列表与字典 #列表转字典 list1=['a','b','c'] list_dict=dict(enumerate(list1)) print(list_dict,type(list_dict)) #字典转列表 dict_list=list(list_dict.items()) print(dict_list,type(dict_list)) ''' 列表和字典的区别是什么? 1、列表是有序的,字典是无序的 2、字典是按照key-valu值的形式存储的 3、列表是按照索引存放各种集合 '''