



#!/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