设为首页 加入收藏

TOP

python 之 函数 装饰器(二)
2019-06-12 00:06:09 】 浏览:104
Tags:python 函数 装饰
p;        res=func(*args,**kwargs)
           return res
       else:
           print('用户名或密码错误')
   return wrapper
?
def timmer(func):
   def wrapper(*args,**kwargs):
       start_time=time.time()
       res=func(*args,**kwargs)
       stop_time=time.time()
       print(stop_time-start_time)
       return res
   return wrapper
?
@timmer # timmer 统计的是auth+index的执行时间
@auth
def index():
   time.sleep(1)
   print('welcome to index page')
   return 122
?
index()

5.86 有参装饰器

import time
current_user={
   'username':None
}
def auth(engine): # engine='file' #添加一层函数传engine值
   def auth2(func): # func=index
       def wrapper(*args,**kwargs):
           if engine == 'file':
               if current_user['username']:
                   print('已经登陆过了')
                   res=func(*args,**kwargs)
                   return res
               uname=input('用户名>>: ').strip()
               pwd=input('密码>>: ').strip()
               if uname == 'egon' and pwd == '123':
                   print('登陆成功')
                   current_user['username']=uname
                   res=func(*args,**kwargs)
                   return res
               else:
                   print('用户名或密码错误')
           elif engine == 'mysql':
               print('基于MyQL的认证')
           elif engine == 'ldap':
               print('基于LDAP的认证')
       return wrapper
   return auth2
#auth_src=auth('ldap')
#@auth_src
?
@auth('ldap') # @auth2 #index=auth2(index) #index=wrapper
def index():
   time.sleep(1)
   print('welcome to index page')
   return 122
?
index() # wrapper()

5.87 有参装饰器模板

def outter2(x,y,z):
   def outter(func):
       def wrapper(*args,**kwargs):
           res=func(*args,**kwargs)
           return res
       return wrapper
   return outter
@outer2(1,2,3)
# ==========================================
def index():
   pass
res=index()
print(res)

使用:在被装饰对象正上方单独一行,@有参装饰器名(1,2,3)

@有参装饰器名(1,2,3)
def foo():
   pass
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Django框架简介,wsgiref 与 jinja.. 下一篇序列化,pickle,shelve,json,conf..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目