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

python学习系列之python装饰器基础(2)---装饰含返回值的函数

时间:2015-11-30 02:21:41      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:python   装饰器   python装饰器   

在上篇基础(1)中,我写了一个装饰器及使用方法,但是如果遇到一个函数带返回值的话,就不好使了,因此重写一个装饰器如下:

#basic2.py
#coding:utf-8

def auth(func):
    def inner(*arg, **kwargs):
        print ‘before‘
        temp = func(*arg,**kwargs) #这行是关键,func相当于fetch_server_list
        print ‘after‘
        return temp   #相当于返回fetch_server_list的值,又由于原函数fetch_server_list的值相当于返回 server_list的值,所以最终能得到 [‘a1‘,‘a2‘,‘a3‘]。
    return inner


@auth
def fetch_server_list(arg):
    serve_list = [‘a1‘,‘a2‘,‘a3‘]
    return serve_list

调用这个装饰器:

#b2.py

import basic2

ret_list = basic2.fetch_server_list(‘test‘)
print ret_list

执行结果:

#python b2.py
before
after
[‘a1‘, ‘a2‘, ‘a3‘]


本文出自 “苦咖啡's运维之路” 博客,请务必保留此出处http://alsww.blog.51cto.com/2001924/1718015

python学习系列之python装饰器基础(2)---装饰含返回值的函数

标签:python   装饰器   python装饰器   

原文地址:http://alsww.blog.51cto.com/2001924/1718015

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