Python自动化测试(四)
二、装饰器
# 在编程领域,有这么两个原则是必须遵守的,具体就是开放封闭的原则,具体如下:
# 封闭:已实现的功能代码不应该被修改
# 开放:对现有功能的扩展开放
# 装饰器函数
def outer(func):
def inner(name):
print("log")
return func(name)
# inner是inner()函数的对象
# inner赋值给了fun1
return inner
@outer
#被装饰的函数
def func1(name):
print("a")
func1(name="hello Python")
"""
对如上的代码进行逐步的解释:
a、自动执行outer函数并且将其下面的函数名fun当作参数来传递;
b、将outer函数的返回值(变量或者是函数),重新赋值给fun;
c、一旦结合装饰器后,调用fun其实执行的是inner函数部,原来的fun被覆盖;
d、一旦这个函数被装饰器装饰之后,被装饰的函数重新赋值成装饰器的内层函数
依据如上,我们可以总结出,它执行的顺序具体为:
先执行outer的函数,再执行内部函数inner,下来执行到inner函数的返回值,再具体到inner的函数,执行inner函数里面的表达式
Def xx1(被装饰函数):
def xx2(如果被装饰函数有参数那么输入):
xxxxxxxxxxxxxxx
被装饰函数(如果被装饰函数有参数那么输入)
xxxxxxxxxxxxxxx
# 如果被装饰函数中含有reture则需要返回被装饰函数
# 没有则不需要
reture xx2
"""

import sys
# 引入sys标准库
LOGIN_USER={'isLogin':False}
def outer(func):
def inner(*args,**kwargs):
if LOGIN_USER['isLogin']:
return func()
else:
print('请登录')
return inner
def login():
username=input('请输入用户名:\n')
password=input('请输入密码:\n')
if username=='wuya' and password=='admin':
LOGIN_USER['isLogin']=True
print('登录成功')
else:
print('请输入正确的账户和密码')
@outer
def admin():
'''后台系统'''
print('欢迎访问后台管理系统')
@outer
def order():
'''交易系统'''
print('欢迎访问交易管理系统')
def main():
while True:
f=int(input('1、登录 2、后台系统 3、交易系统 4、退出\n'))
if f==1:
login()
elif f==2:
admin()
elif f==3:
order()
elif f==4:
sys.exit(0)
if __name__ == '__main__':
main()

三、生成器
# generator()是否存在一边循环一边计算的方式
# 可被Iterable的对象
g=(x for x in range(5))
def func():
for item in g:
yield item
# 迭代器,生成器,流式数据
for item in func():
print(item)

四、文件操作
"""
文件操作步骤:
1、打开文件
2、对文件进行操作,读或者是写的操作
3、关闭文件
模式:
r:读取
w:写,特点是先清空文件已有的内容,然后把新的内容写进去
a:写,在文件已有内容的基础之上增加新的内容
open(写)
1、查看被操作文件是否存在
2、若不存在,会自动创建文件
open(读)
1、查看被操作文件是否存在
2、如果不存在则抛出异常
"""
f=open('log.txt','w')
f.write('hello Python')
f.close()


五、小问题
1、举例说明列表与字符串之间的转换
2、举例说明列表与字典之间的转换
3、举例说明字典的排序
4、列表与元组的区别是什么?
5、duct1={'name':'wuya','age':18,'datas':[{"language":[{"language":"go","p":["Python"]}]}]}获取的Python
str1="Python,go,Java,Net"
list_str=str1.split(',')
print(list_str)
print(type(list_str))
str_list="|".join(list_str)
print(str_list)
print(type(str_list))
list_dict=dict(enumerate(list_str))
print(list_dict)
print(type(list_dict))
print("对字典根据key进行排序:",
dict(sorted(list_dict.items(),
key=lambda item:item[0])))
# 元组是不可变的 不能修改,不可增加也不可删除
# 列表是可变的 可以增加,也可以把已有的对象删除
duct1={'name':'wuya','age':18,'datas':[{"language":[{"language":"go","p":["Python"]}]}]}
# for item in duct1['datas']:
# for item in item['language']:
# for item in item['p']:
# print(item)
for item in duct1['datas']:
print(item)
print(item['language'][0]['p'][0])


浙公网安备 33010602011771号