derezzed

导航

python之def函数进阶DAY11(练习题)

 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

 

posted on 2017-12-28 18:23  derezzed  阅读(452)  评论(0)    收藏  举报