1 # 作业:
2 # 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
3 '''
4 f = open("user.txt",'w',encoding='utf-8')
5 f.write('chen\n123')
6 f.close()
7 def wrapper(func): #您的函数名 就吧它理解为一个入口
8 def inner(*args): #您的函数的参数
9 print('----第一次操作请输入你的用户名密码验证!----')
10 user_name = input("用户名:")
11 user_password = input("密码:")
12 with open('user.txt','r',encoding='utf-8') as ff:
13 saved = ff.readlines()
14 if user_name in saved[0] and user_password in saved[1]:
15 print("----验证成功 可以执行函数程序----")
16 ret = func(*args)
17 return ret
18 else:
19 print("----验证错误 程序未能执行----")
20 return inner
21
22 @wrapper
23 #我自己的函数1
24 def function1(x,y):
25 print("函数执行成功!")
26 return x + y
27 ret1 = function1(2,3)
28 print(ret1)
29 #我自己的函数2
30 def function2(x,y,z):
31 print("函数又执行成功了 哦也!")
32 return x + y +z
33 ret2 = function2(2,3,4)
34 print(ret2)
35 '''
36 # 2.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名称写入文件
37
38 import time
39
40 def wrapper(func):
41 def inner(*args):
42 result = func(*args)
43 with open("log.txt",'a',encoding='utf-8') as f:
44 f.write("====函数%s 在%s执行了==== \n" %(func.__name__, time.asctime( time.localtime(time.time()) )))
45 return result
46 return inner
47 @wrapper
48 #我自己的函数1
49 def function1(x,y):
50 print("函数执行成功!")
51 return x + y
52 ret1 = function1(2,3)
53 print(ret1)
54 @wrapper
55 #我自己的函数2
56 def function2(x,y,z):
57 print("函数又执行成功了 哦也!")
58 return x + y +z
59 ret2 = function2(2,3,4)
60 print(ret2)
61
62 # 进阶作业(选做):
63 # 1.编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果
64
65 # 2.为题目1编写装饰器,实现缓存网页内容的功能:
66 # 具体:实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
67 #
68 # 默写任务:
69 # 1.需默写代码&执行过程&使用方法
70 # def timer(func):
71 # def inner(*args,**kwargs):
72 # '''执行函数之前要做的'''
73 # re = func(*args,**kwargs)
74 # '''执行函数之后要做的'''
75 # return re
76 # return inner
77 #
78 # @timer
79 # def aaa():print(‘a’)
80 #
81 # 2.默写代码
82 # import time
83 # def timer(func):
84 # def inner(*args,**kwargs):
85 # start = time.time()
86 # ret = func(*args,**kwargs)
87 # print(time.time() - start)
88 # return ret
89 # return inner
90 #
91 # @timer #==> func = timer(func)
92 # def func(a):
93 # print('你好我好大家好')
94 # return '新年好'
95 #
96 # 预习:
97 # http://www.cnblogs.com/Eva-J/articles/7194277.html
98 # http://www.cnblogs.com/Eva-J/articles/7213953.html