有函数返回值的装饰器

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
#第五步:带有返回值的装饰器  把第四步复制过来
#用于扩展基本函数的函数
def kuozhan(func):
    #内部函数(扩展之后的laxi函数)
    def newlaxi():
        #以下三步就是扩展之后的功能,于是我们把这三个哥们做成一个函数
        #取名叫做newlaxi
        #扩展功能1
        print('拉屎之前')
        #调用基本函数
        result1 = func()
        #扩展功能2
        print('拉屎之后')

        #未来的laxi函数没有返回值,所以在最后调用的时候返回值为None
        #为newlaxi添加返回值
        return result1

    #这里需要有返回值才能传给laxi
    #添加返回值
    #return 12  laxi原来是函数,laxi扩展之后还以函数的形式赋值给laxi
    #所以return后面必须是扩展之后的函数
    #5装饰器用于返回未来的laxi函数的return
    #5而不是newlaxi(laxi)自带的返回值
    #5应该在newlaxi函数里面再加一个return
    return newlaxi
#基本函数
@kuozhan#laxi = kuozhan(laxi) #laxi就相当于以前的result,用来接收返回值
def laxi():
    print('拉屎')
    return '擦屁股'
#扩展之后的函数要重新赋值给基本函数!(但是此步骤还实现不了)
#laxi = kuozhan(laxi) #laxi就相当于以前的result,用来接收返回值
#print(laxi)#第四步的目的是为了让打印laxi函数的时候打印一个函数
#而不是像第二步和第三步打印回来的是None
#调用函数
result = laxi()#laxi就是扩展的内部函数newlaxi函数,就是return返回的值
print('原函数的返回值为')
print(result)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值