



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