码迷,mamicode.com
首页 > 编程语言 > 详细

Python 装饰器

时间:2016-09-07 06:59:30      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:python 装饰器


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

Python 装饰器

标签:python 装饰器

原文地址:http://lvnian.blog.51cto.com/7155281/1847025

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!