python装饰器作业

# user_dic={‘xiaohong‘:‘123‘,‘xiaobai‘:‘123‘,‘xiaohei‘:‘123‘}
# with open(‘idpd.txt‘,‘w‘,encoding=‘utf-8‘) as f:
#     f.write(str(user_dic))
# with open(‘idpd.txt‘,‘r‘,encoding=‘utf-8‘) as f2:
#     read=f2.read()
#     print(read)
#     user_dic=eval(read)
#将user_dic字典写入文件,以及将文件字典导入
# idpd_path=r‘F:\Pycharmprojects\0615\idpd.txt‘
# idpd_dic={‘id‘:False,‘password‘:False}
# def Login(func):
#     def login(*args,**kwargs):
#         if idpd_dic[‘id‘] and idpd_dic[‘password‘]:
#             res=func(*args,**kwargs)
#             return res
#         with open(idpd_path,‘r‘,encoding=‘utf-8‘) as f:
#             login_dic=eval(f.read())
制作缓存
# from urllib.request import urlopen
# import os
# cashe_path=r‘F:\Pycharmprojects\0615\makecache.txt‘
# def make_cashe(func):
#     def wrapper(*args,**kwargs):
#         if os.path.getsize(cashe_path):
#             print(‘\033[45m====>有缓存\033[0m‘)
#             with open(cashe_path, ‘rb‘, ) as f:
#                 res=f.read()
#         else:
#             res=func(*args,**kwargs)
#             with open(cashe_path,‘wb‘) as f:A
#                 f.write(res)
#         return res
#     return wrapper
# @make_cashe
# def get(url):
#     return urlopen(url).read()



#在文件开头声明一个空字典,然后在每个函数前加上装饰器,完成自动添加到字典的操作
# fun_dic={}
# def Outer(key):
#     def outer(func):
#         def wrapper(*args,**kwargs):
#             fun_dic[key]=func
#         return wrapper
#     return outer
#
# @Outer(‘f1‘)
# def f1():
#     print(‘from f1‘)
# @Outer(‘f2‘)
# def f2():
#     print(‘from f2‘)
# @Outer(‘f3‘)
# def f3():
#     print(‘fromt f3‘)
# f1()
# f2()
# f3()
# print(fun_dic)

#             i=input(‘id:‘)
#             password=input(‘password:‘)
#         if i in login_dic and password in login_dic:
#             print(‘login successfully‘)
#             idpd_dic[‘id‘]=True
#             idpd_dic[‘password‘]=True
#             res=func(*args,**kwargs)
#             return res
#         else:
#             print(‘login error‘)
#     return login
#认证成功后,之后多次运行其他不再需要认证
#在文件开头声明一个空字典,然后在每个函数前加上装饰器,完成自动添加到字典的操作
# fun_dic={}
# def Outer(key):
#     def outer(func):
#         def wrapper(*args,**kwargs):
#             fun_dic[key]=func
#         return wrapper
#     return outer
#
# @Outer(‘f1‘)
# def f1():
#     print(‘from f1‘)
# @Outer(‘f2‘)
# def f2():
#     print(‘from f2‘)
# @Outer(‘f3‘)
# def f3():
#     print(‘fromt f3‘)
# f1()
# f2()
# f3()
# print(fun_dic)
时间: 2024-11-09 03:59:41

python装饰器作业的相关文章

深入浅出 Python 装饰器:16 步轻松搞定 Python 装饰器

Python的装饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都很相似--都是想要对一个已有的模块做一些"修饰工作",所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能)侵入到原有的模块中的代码里去.但是OO的Decorator简直就是一场恶梦,不信你就去看看wikipedia上的词条

5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器

一.什么是装饰器? 实际上装饰器就是个函数,这个函数可以为其他函数提供附加的功能. 装饰器在给其他函数添加功能时,不会修改原函数的源代码,不会修改原函数的调用方式. 高阶函数+函数嵌套+闭包 = 装饰器 1.1什么是高阶函数? 1.1.1函数接收的参数,包涵一个函数名. 1.1.2 函数的返回值是一个函数名. 其实这两个条件都很好满足,下面就是一个高阶函数的例子. def test1(): print "hamasaki ayumi" def test2(func): return t

python装饰器通俗易懂的解释!

python装饰器 刚刚接触python的装饰器,简直懵逼了,直接不懂什么意思啊有木有,自己都忘了走了多少遍Debug,查了多少遍资料,猜有点点开始明白了.总结了一下解释得比较好的,通俗易懂的来说明一下: 小P闲来无事,随便翻看自己以前写的一些函数,忽然对一个最最最基础的函数起了兴趣: 1 def sum1(): 2 sum = 1 + 2 3 print(sum) 4 sum1() 此时小P想看看这个函数执行用了多长时间,所以写了几句代码插进去了: 1 import time 2 3 def

python装饰器1

第八步:让装饰器带 类 参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 # -*- coding:gbk -*- '''示例8: 装饰器带类参数''' class locker:     def __init__(self):         print("locker.__init__() should be not called.")   

Python装饰器由浅入深

装饰器的功能在很多语言中都有,名字也不尽相同,其实它体现的是一种设计模式,强调的是开放封闭原则,更多的用于后期功能升级而不是编写新的代码.装饰器不光能装饰函数,也能装饰其他的对象,比如类,但通常,我们以装饰函数为例子介绍其用法.要理解在Python中装饰器的原理,需要一步一步来.本文尽量描述得浅显易懂,从最基础的内容讲起. (注:以下使用Python3.5.1环境) 一.Python的函数相关基础 第一,必须强调的是python是从上往下顺序执行的,而且碰到函数的定义代码块是不会立即执行它的,只

python 装饰器学习(decorator)

最近看到有个装饰器的例子,没看懂, #!/usr/bin/python class decorator(object): def __init__(self,f): print "initial decorator" f() def __call__(self): print "call decorator" @decorator def fun(): print "in the fun" print "after " fun

【转】九步学习python装饰器

本篇日志来自:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 纯转,只字未改.只是为了学习一下装饰器.其实现在也是没有太看明白,对于装饰器我就是用的时候找例子,能蒙对,但是用过之后一段时间就忘了.还是用的少.有空应该好好看一看的,包括闭包.对于各种现代编程语言来说闭包都是很重要的.在这里先谢过原作者,如有侵权请告知. =-=-=-=-=-=-=-=-=-=-一条不怎么华丽的分隔线-=-=-=-=-=-=-=-=-=-= 这

【Python之旅】第四篇(一):Python装饰器

有时候拿到一个程序接口,需要对其进行扩展,但是又不能修改原来接口的源代码,这时候就需要使用装饰器了. 有下面一个小程序,假如是别人提供给我们的调用接口: import time def sayHi():         time.sleep(1)         print 'Hello, I am xpleaf.' 一般情况下,如果想要计算该程序的执行时间(因为有可能要对该接口进行某些性能上的测试),就需要把以上接口修改为下面这样,同时执行一下: 程序代码: import time def s

python装饰器原理及相关操作

python装饰器,简单的说就是用于操作底层代码的代码,在不改变底层代码函数的情况下对底层代码进行验证操作等 首先,必须知,道调用func和func的区别,分别为返回函数所在的内存地址和调用该函数,输出执行结果,例如: def func(): print("欢迎光临!!!") print("返回函数所在的内存地址:",func) func() 列举一个简单的web页面调用例子 1 #做登录验证 2 def login(func): 3 print("登录成