python自动化测试学习笔记-4内置函数,处理json
函数、全局变量
写代码时注意的几点事项:
1、一般写代码的时候尽量少用或不用全局变量,首先全局变量不安全,大家协作的情况下,代码公用容易被篡改,其次全局变量会一直占用系统内容。
2、函数里如果有多个return值,会把几个return值放到一个元组里
def hello(a,b,c,d):return a,b,c,dres=hello('1111','2222','3333','4444')print(res)
3、一个函数尽量只写一个功能
4、用简练的代码写高级的程序
例如:循环一个list的每一个值,通常可以用for循环
num = [1,2,3,4,5,6,7,8,9]newnum=[]for i in num: newnum.append(i)print(newnum)
python提供一种更简洁的方式来实现,列表推导式:
num = [1, 2, 3, 4, 5, 6, 7, 8, 9]newnum=[str(x) for x in num ]print(newnum)
又例如,交换A,B的值,通常做法是添加第三方变量:
a=1b=2#a=2,b=1c=0c=aa=bb=cprint(a,b)
python提供了一种更简便的方法,直接交换A,B的值
#python中可以直接交换a=1b=2a,b=b,aprint(a,b)
5、函数即变量
函数名也是一个变量,不加(),只是函数名。
def say(name):print(name)na=sayna('sss')
上述代码看到,我们把na=say ,因为say是一个函数,所以传给na后,na也变为一个函数,直接用na调用,也执行了定义的函数。再如:
def add():print('tianjia')def view():print('chakan')def delete():print('shanchu')menu={'1':add,'2':view,'3':delete}case=input('请输入选择:1、2、3').strip()if case in menu: menu[case]()else:print('输入错误')
上述代码我们定义了三个函数,分别代表添加,查看,删除操作,同时定义一个字典来存放不同选择代表的调用不同函数;
当执行input时,判断输入的key是不是存在于字典中,menu[case](),如果存在,menu[case]的value值对应的函数名,加上()则表示执行函数;
当然这种函数即变量调用的时候适用于传参为空或者传参相同的场合。
内置函数
之前已经用到了一些python的内置函数,今天来学习一些常用的内置函数。
len() 方法返回对象(字符、列表、元组等)长度或项目个数。
len(s) --s对象
str='123456789'list=['1adssss',2,'3','4']print(len(str))#长度;print(len(list))
执行结果:9、4
input()
python3 里 input() 默认接收到的是 str 类型。
st=input('shuru:')#输入print(type(st))
执行结果:输入4,查看到input的类型是<class 'str'>
如果想要int类型,可以进行强制转化int():
st=int(input('shuru:'))#输入print(type(st))
查看执行结果:
shuru:3
<class 'int'>
print() 方法用于打印输出,最常见的一个函数。
print('打印')#输出
执行结果:打印
type()查看对象类型
list=['1adssss',2,'3','4']print(type('sss'))#查看类型print(type(2))print(type(list))
查看执行结果:
<class 'str'>
<class 'int'>
<class 'list'>
all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否不为 0、''、False 或者 iterable 为空,如果是返回 True,否则返回 False。简单的说就是判断参数是否都为真;
any() 函数用于判断给定的可迭代参数 iterable 是否全部为空对象,如果都为空、0、false,则返回 False,如果不都为空、0、false,则返回 True。简单说就是参数有任意一个为真,则返回真。如下:
print(all([0,1,2,3,4,5]))#判断其中的值都为真,则返回真print(any([0,1,2,3,4,5]))#判断其中有一个值为真,则返回值真
查看执行结果:False、True
bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
bin(10)#十进制转2进制ejz=bin(100)print(ejz)print(ejz.replace('0b',''))
查看执行结果:0b1100100、1100100
代码中,如果直接执行bin(),会有0b开头代表二进制数,想要得到一个整数类型,我们把0b替换掉;
chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
chr(i) -- 可以是10进制也可以是16进制的形式的数字。
print(chr(88))#打印数字对应的asciiprint(chr(0x61))
执行查看结果:
X
a
ord() 函数是查询一个长度为1的字符串对应的ASCII值
print(ord('#'))#打印字符串的对一个的ASCIIprint(ord('e'))#打印字符串的对一个的ASCII
查看执行结果:35、101
dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。
a='aaa'b={}c=[]d=set()print(dir(a))#查看字符串的方法print(dir(b))#查看字典的方法print(dir(c))#查看list的方法print(dir(d))#查看元组的方法print(dir())#查看当前模块的属性列表
查看执行结果:可以看到打印出了对应对象类型的方法,如果有写对象不清楚其方法,可以用此方法查看
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'c', 'd']
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
print(eval('[]'))#执行简单的python代码a=3b=aprint(eval('b'))print(eval('1+2'))
查看执行结果:[]、3、3
excel()函数可以执行一个稍微复杂的python或执行一个python文件
code='''def a(): print('aaaa')'''print(exec(code))a()#调用
上述代码中exec执行了code,解析出其中的代码段定义了一个函数a(),所以在后面的调用a()的时候没有报错;直接打印了aaaa
又如,我们有一个python文件,可以用读的形式执行代码:
with open('clean_log.py','r',encoding='utf-8') as f:exec(f.read())
上述代码的意思就是执行了clean_log.py文件中的代码。
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
比如我们同时循环两个列表的元素,可以用zip
ids=[1,2,3,4,5,6,7,-1,-2]names=['aaa','bbb','ccc','ddd','eee','fff']for id,name in zip(ids,names):print(id,name)
查看执行结果:
1 aaa
2 bbb
3 ccc
4 ddd
5 eee
6 fff
在比如我们直接打包两个列表:
ids=[1,2,3,4,5,6,7,-1,-2]names=['aaa','bbb','ccc','ddd','eee','fff']print(list(zip(ids,names)))
查看执行结果:
[(1, 'aaa'), (2, 'bbb'), (3, 'ccc'), (4, 'ddd'), (5, 'eee'), (6, 'fff')]
sorted() 函数对所有可迭代的对象进行排序操作。 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
ids=[1,2,3,4,5,6,7,-1,-2]print(sorted(ids,reverse=True))#默认是升序排列,可以用reverse进行降序
查看执行结果:
[7, 6, 5, 4, 3, 2, 1, -1, -2]
对一个字符串进行排序:
print(sorted('2125343230'))print(sorted('asdgowequwxasd'))
查看执行结果:返回的是两个默认升序的列表
['0', '1', '2', '2', '2', '3', '3', '3', '4', '5']
['a', 'a', 'd', 'd', 'e', 'g', 'o', 'q', 's', 's', 'u', 'w', 'w', 'x']
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
def func(a):if a%2==0:return True else:return Falsenum2=[1,2,3,4,5,6,7,8,9,10]nums=[x for x in range(11)]res=map(func,nums)res1=map(func,num2)print(list(res))print(list(res1))#map 的结果是一串字符串,需要强制类型转换成list查看
实际就是用list中的每一个值调用func函数,返回的是一个字符串,需要强制转化一下成list,在这里map等同于下面的代码:
all=[]for num in nums: res=func(num) all.append(res)print(all)
执行代码可以看到,返回值是一样的:
[True, False, True, False, True, False, True, False, True, False, True]
[False, True, False, True, False, True, False, True, False, True]
[True, False, True, False, True, False, True, False, True, False, True]
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
与map类似,只不过filter是用来过滤的。
def func(a):if a%2==0:return True else:return Falsenums=[0,1,2,3,4,5,6,7,8,9,10]res=filter(func,nums)#如果返回的是值0,0会当作False 过滤掉print(list(res))
查看执行结果:
[0, 2, 4, 6, 8, 10]
json函数
使用json函数需要导入json模块
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
json.dumps 用于将 Python 对象编码成 JSON 字符串。
例如,我们向文件中写入一个字典表时,写入的是一个字符串形式的,不方便查看,这时就可用用json进行格式转化。
import jsond={'吉普车':{'color':'fffff','count':20,'price':100000},'小轿车': {'color': '00000','count': 50,'price': 60000 }}f=open('aaa','a+',encoding='utf-8')f.seek(0)f.write(str(d))
执行上述代码,写入文件的是一个字符串。
import jsond={'吉普车':{'color':'fffff','count':20,'price':100000},'小轿车': {'color': '00000','count': 50,'price': 60000 }}f=open('aaa','a+',encoding='utf-8')f.seek(0)res=json.dumps(d,indent=4,ensure_ascii=False)#json 把字典转化为json,indent表示缩进,显示中文f.write(res)
执行上述代码,查看文件:
{ "吉普车": { "count": 20, "color": "fffff", "price": 100000 }, "小轿车": { "count": 50, "color": "00000", "price": 60000 }}
还有一个dump方法,与dumps的方法区别是:
#dump 操作的是文件 ,dumps操作的是字符串#dump 第一个参数是字典数据,第二个参数是文件,自动写入文件
如上边的代码用dump改造一下:
import jsond={'吉普车':{'color':'fffff','count':20,'price':100000},'小轿车': {'color': '00000','count': 50,'price': 60000 }}f=open('aaa','a+',encoding='utf-8')f.seek(0)json.dump(d,f,ensure_ascii=False,indent=4)#d表示字典数据,f是文件f.close()
查看执行结果,同样文件中写入了json串,省略了一步write操作。
json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。我们用上述写入文件的json进行试验:
import jsonf=open('aaa','r',encoding='utf-8')res=f.read()dict_res=json.loads(res)#把json转化python的数据类型字典print(dict_res)
执行查看结果:返回的是python的字典类型
{'吉普车': {'count': 20, 'color': 'fffff', 'price': 100000}, '小轿车': {'count': 50, 'color': '00000', 'price': 60000}}
同样的还有一个load方法,与dump方法一样,参数中传入文件,直接进行转换,省略了一步读的动作:
import jsonf=open('aaa','r',encoding='utf-8')print(json.load(f))
查看执行结果,返回了字典类型:
{'小轿车': {'count': 50, 'price': 60000, 'color': '00000'}, '吉普车': {'count': 20, 'price': 100000, 'color': 'fffff'}}
转载于:https://www.cnblogs.com/phoebes/p/8289860.html
python自动化测试学习笔记-4内置函数,处理json相关推荐
- python 内置函数转list_python学习笔记11-python内置函数
python学习笔记11-python内置函数 一.查看python的函数介绍: 二.python内置函数 1.abs获取绝对值: 通过python官网查看absabs(x) Return the a ...
- Python学习笔记011——内置函数exec()
1 描述 把一个字符串当成语句执行 exec() 执行储存在字符串或文件中的 Python 语句,相比于 eval() , exec() 可以执行更复杂的 Python 代码. exec函数和ev ...
- python学习笔记011——内置函数__module__、__name__
1 __module__描述 __module__ : 如果当前模块为顶层模块执行 则打印__main__ 如果当前模块为被调用模块的时候 打印当前模块的名称 2 __module__示例 def f ...
- python学习笔记 day16 内置函数(四)
复习 python中有哪些数据类型:int str bool list tuple dict set python中有哪些数据结构: list,tuple,dict,set reversed()--- ...
- python学习笔记 day15 内置函数(三)
bin(),oct(),hex()----进制转换,将十进制分别转换成二进制,八进制和十六进制 print(bin(10)) print(oct(10)) print(hex(10)) 运行结果: a ...
- python自动化测试学习笔记合集二
python自动化测试学习笔记-4内置函数,处理json 函数.全局变量 写代码时注意的几点事项: 1.一般写代码的时候尽量少用或不用全局变量,首先全局变量不安全,大家协作的情况下,代码公用容易被篡改 ...
- python中的json函数_python中装饰器、内置函数、json的详解
装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...
- Python学习笔记(4)~Python基础练习之常用内置函数(1-10)
Python基础练习之常用内置函数(1-10) 1.abs() 作用 求数的绝对值或者复数的模 测试demo #!/usr/bin/python3 # abs: 求绝对值 or 复数的 ...
- 初学者python笔记(内置函数_2)
这篇初学者笔记是接着上一篇初学者python笔记(内置函数_1)的.同样都是介绍Python中那些常用内置函数的. max()和min()的高级用法 我们都知道,max():取最大值,min():取最 ...
- python自动化测试学习笔记合集
python自动化测试学习笔记-1 一.什么是自动化 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程.直白的就是为了节省人力.时间或硬件资源,提高测试效率,便引入了通过软件或程序自动化执行 ...
最新文章
- mysql+redis
- 淘气的页数 - 格式化字符串
- 初学者选黑卡还是微单_入门单反和微单相机该买哪个
- 【Paper】2009_Controllability of Multi-Agent Systems from a Graph-Theoretic Perspective 精炼版
- boost::process::windows相关的测试程序
- C#刷遍Leetcode面试题系列连载(4): No.633 - 平方数之和
- 卡方检验python程序_Python从零开始第二章(1)卡方检验(python)
- 前端学习(2607):vue指令
- 60usebean创建实例对象
- mysql进阶,03-事务2-多个客户端一起操作时的情况
- 第1章 ASP.NET 3.5与开发工具
- 理解insert all/insert first的使用
- dapper--查询超时时间
- mne.io.read_raw_edf()
- 备份和恢复 ESXi 主机配置
- 大数据----2.基础环境搭建
- Pyside2安装与基础操作
- 表格里面如何根据身份证号提取出生日期
- 使用 Apache ECharts 实现圣都装饰的延期日历图
- linux下的acr122工具
热门文章
- LINUX编译Android FFmpeg:fatal error: errno.h: No such file or directory
- 周报中竟然出现学习时间,主管怎么当的
- CSDN终端数据更新不同步?
- 解决办法:error: ‘unordered_map’ in namespace ‘std’ does not name a template type
- cad管线交叉怎么画_CAD命令:打断(BREAK)命令的使用技巧
- tcp 裸流 发送 html,ffmpeg 命令学习
- mysql union 别名报错_浅析mysqlunion和unionall
- 005-统一沟通-部署-基础-环境作业
- 算法:从上往下打印二叉树
- 从ext2文件系统上读出超级块