#!/usr/bin/env python #codencoding: utf-8 def outer1(func): def wapper(): print ‘装饰器1‘ func() return wapper def outer2(func): def wapper(): print ‘装饰器2‘ func() return wapper @outer2 @outer1 def foo(): print ‘It is foo‘ foo()
装饰器-动态参数-登陆验证
def login(): name = raw_input(‘please you name:‘) pwd = raw_input(‘please you pwd:‘) if name == ‘admin‘ and pwd == ‘123456‘: return True else: return False def outer(func): def wrapper(): is_login = login() if not is_login: return ‘登陆失败‘ return func() return wrapper @outer def f1(): print ‘f1‘ return ‘欢迎光临‘ print f1()
def login(key): #验证用户名 local_key = ‘fefwgwe2352525sdgdsgdsgsgs‘ if local_key == key: return True else: return False def outer(func): def wrapper(*args,**kwargs): #key = kwargs[‘token‘] #取出token对应值 #del kwargs[‘token‘] #删除token键值,因为f1()只能传1个参数 key = kwargs.pop(‘token‘) #此句可代替上面2句功能 is_login = login(key) if not is_login: return ‘非法用户‘ temp = func(*args,**kwargs) return temp return wrapper @outer def f1(arg): print ‘f1‘,arg return ‘欢迎光临‘ key = ‘fefwgwe2352525sdgdsgdsgsgs‘ print f1(‘yangmv‘,token=key)
原文:http://www.cnblogs.com/yangmv/p/5148987.html