首页 > 编程语言 > 详细

python笔记之装饰器

时间:2020-01-01 11:14:09      阅读:77      评论:0      收藏:0      [点我收藏+]

python中函数的参数也可以是函数,在多个函数需要实现相同代码时也可以考虑使用装饰器进行处理。

假设以下场景,需要进行查询及查看个人主页操作,那么在此操作之前一般需要先登录系统,此时就可以将登录函数写成装饰器函数

 1 def login(fun): #装饰器函数格式,函数内层在定义一个函数,同时函数返回内层函数本身,相当于是执行内层函数msg
 2     def msg():
 3         print(登录成功)
 4         fun()
 5     return msg
 6 
 7 @login    #装饰器login
 8 def search1():  #一旦函数被装饰,自动执行装饰器函数login,且该函数相当于装饰器的参数
 9     print(查询成功)
10 
11 @login
12 def profile():
13     print(欢迎你查看个人主页)

以上代码,login为装饰器函数,search1、profile为被装饰器函数,详细的解释这个代码的意思:
1、自动执行login函数并且将被装饰的函数当作login函数的参数来处理
2、将login函数的返回值msg重新赋值给被装饰的函数
3、一旦结合了装饰器,调用被装饰的函数本质上是执行msg()函数
4、函数被装饰之后,被装饰的函数重新赋值给装饰器的内层函数

下面看一下被装饰函数有参数的情况

 1 def loginxt(fun):
 2     def msg(*args,**kwargs):
 3         r = fun(*args,**kwargs)
 4         if r:
 5             return r
 6     return msg
 7 
 8 @loginxt
 9 def order(name,pwd):
10     if name==admin and pwd==123456:
11         return (欢迎你登录系统)
12     else:
13         return (请先登录系统)
14 
15 
16 print(order(admin,123456))

python笔记之装饰器

原文:https://www.cnblogs.com/heertong/p/12128236.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!