python 装饰函数

简单例子

此文的最后一个蛋疼的例子可以帮助理解这个概念,

# # 错误写法
# def warp(fun):
#     print("***")
#     fun()
#     print("***")
#
# @warp
# def myprint():
#     print("lalala")
#
# myprint #这句并没有卵用,删掉这句也会有输出,输出是由@warp这句打印的
# print(myprint) #None


# 正确的写法是在函数体中定义函数并返回函数
def warp(fun):
    def warpper():
        print("***")
        fun()
        print("***")
    return warpper

@warp
def myprint():
    print("lalala")

myprint ()

参数

# -*- coding: utf-8 -*-
# 被装饰的函数的参数
def warp(fun):
    def warpper(x):
        print("***")
        fun(x)
        print("***")
    return warpper

@warp
def myprint(x):
    print(x)

myprint("hello")


# 装饰器参数,例子一
def warp_select_long(style):
    if(style=="*"):
        def warp1(fun):
            def warpper(x):
                print("***")
                fun(x)
                print("***")

            return warpper
        return warp1
    else:
        def warp2(fun):
            def warpper(x):
                print("===")
                fun(x)
                print("===")
            return warpper
        return warp2




# 装饰器参数,例子二
def warp_select_short(c):
    def warp1(fun):
        def warpper(x):
            print(c*3)
            fun(x)
            print(c*3)
        return warpper
    return warp1


@warp_select_short("=")
@warp_select_long("-")
def myprint(x):
    print(x)
myprint("hello")

其他

functools 和 类装饰器的例子:
http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html

参数,返回值,类函数的例子:
https://www.cnblogs.com/mess4u/p/3851358.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值