#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = ‘gaogd‘
‘‘‘
def auth(func):
user = raw_input("input passwd: ").strip()
if user == ‘gaogd‘:
print "-----------welcome login------"
func()
else :
print "---wrong passwd--------"
def task0():
print "do somethin ....0"
def task1():
print "do somethin ....1"
def task2():
print "do somethin ....2"
def task3():
print "do somethin ....3"
auth(task0)
‘‘‘
### 上面的方法,已经把调用的方式改变了,应该还有保留 task0() 这种调用方式
‘‘‘
def auth(func):
def wrapper():
user = raw_input("input passwd: ").strip()
if user == ‘gaogd‘:
print "-----------welcome login------"
func()
else :
print "---wrong passwd--------"
return wrapper ##当调用auth 函数的时候,仅仅返回weapper这个函数体而已,而没有执行函数。
def task0():
print "do somethin ....0"
def task1():
print "do somethin ....1"
def task2():
print "do somethin ....2"
def task3():
print "do somethin ....3"
task0=auth(task0)
task0
print type(task0)
task0()
##当调用auth 函数的时候,仅仅返回weapper这个函数体而已,而没有执行函数。
##也就说执行task0=auth(task0),task0这个时候,并没有执行真正执行函数,只有加括号才是真正的执行
###
‘‘‘
‘‘‘
def auth(func):
def wrapper():
user = raw_input("input passwd: ").strip()
if user == ‘gaogd‘:
print "-----------welcome login------"
return func()
else :
print "---wrong passwd--------"
return wrapper
@auth
def task0():
print "do somethin ....0"
@auth
def task1():
print "do somethin ....1"
@auth
def task2():
print "do somethin ....2"
@auth
def task3():
print "do somethin ....3"
#task0=auth(task0)
#print type(task0)
## 上面的@auth 等同与上面的 task0=auth(task0)
task0()
#### 一个函数可以添加多个装饰器
‘‘‘
‘‘‘
def auth(func):
def wrapper(name):
user = raw_input("input passwd: ").strip()
if user == ‘gaogd‘:
print "-----------welcome login------"
return func(name)
else :
print "---wrong passwd--------"
return wrapper
@auth
def task0(name):
print "do somethin ....0",name
@auth
def task1():
print "do somethin ....1"
@auth
def task2():
print "do somethin ....2"
@auth
def task3():
print "do somethin ....3"
#task0=auth(task0)
#print type(task0)
## 上面的@auth 等同与上面的 task0=auth(task0)
task0(‘cmd‘)
#### 一个函数可以添加多个装饰器
‘‘‘
看完这些再看廖雪峰的文章就容易理解了!
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318435599930270c0381a3b44db991cd6d858064ac0000本文出自 “奋斗吧” 博客,请务必保留此出处http://lvnian.blog.51cto.com/7155281/1847025
原文:http://lvnian.blog.51cto.com/7155281/1847025