Python教程

python装饰器的使用

本文主要是介绍python装饰器的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

语法糖:

def outter(param):

  def decorator(func):

    def warpper(*args, **kwargs):

      pass

      return func(*args, **kwargs)

    return warpper

  return decorator

@outter("xxx")

def test():

  pass

test()  # 装饰后的调用

举例:

import time
dic = {
'username': None,
}

def auth(engine):
def auth2(func):
def wrapper(*args, **kwargs):
if engine == 'login1': #如果传入的是"login1",就进入这种身份的认证
if dic['username']:
print('已经登陆过了')
res = func(*args, **kwargs)
return res

name = input('用户名>>: ').strip()
pwd = input('密码>>: ').strip()
if name == 'egon' and pwd == '123':
print('登陆成功')
dic['username'] = name
res = func(*args, **kwargs)
return res
else:
print('用户名或密码错误')


elif engine == 'login2': #"login2"这种模式的身份认证
print('匿名认证')
elif engine == 'login3': #"login3"
print('用户认证')
return wrapper
return auth2

@auth('login3') #以"login3"模式的身份认证来使用"index"
def index():
time.sleep(1)
print('欢迎登入')
return 123

@auth('login1') #以"login1"模式的身份认证来使用"home"
def home(song):
time.sleep(2)
print('啧啧啧%s' % song)

index()
home('外婆家')

 

这篇关于python装饰器的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!