Python 函数修饰器

例1:

def deco(func):
    def wrappedFunc():
        return "Hello World_"+func()
    return wrappedFunc#很恶心

@deco
def f():
    return  "I am f"

def g():
    return "I am g"

print(f())
print(g())

运行结果:

例2:

def deco(prefix):
    def _deco(func):
        def wrappedFunc():
            return prefix+func()
        return wrappedFunc
    return _deco

@deco("second_")
@deco("first_")
def f():
    return "I am f"

print(f())

运行结果:

deco函数和wrappedFunc函数之间增加了一个_deco函数,这是为了处理deco函数传入的prefix参数。对于修饰器的传入参数prefix,修饰器不会立即将带待修饰的函数作为参数传入完成修饰,而是先做了一个预处理,返回了一个_deco函数,而这个_deco函数才是真正被f函数调用的修饰器。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数装饰Python中一种特殊的语法,可以用来修改、扩展或包装其他函数的功能。装饰本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数作为结果。 装饰的语法使用了@符号,它放在要修饰函数定义之前。当调用被修饰函数时,实际上是调用了装饰返回的新函数。 下面是一个简单的装饰示例: ```python def decorator(func): def wrapper(): print("Before function execution") func() print("After function execution") return wrapper @decorator def say_hello(): print("Hello, world!") say_hello() ``` 在这个例子中,`decorator`是一个装饰函数,它接受一个函数作为参数,并定义了一个内部函数`wrapper`来包装原始函数。`wrapper`函数在调用原始函数前后分别打印了一些信息。 通过在`say_hello`函数定义之前添加`@decorator`语法,我们将`say_hello`函数传递给`decorator`装饰,并将返回的新函数赋值给`say_hello`。因此,当我们调用`say_hello`时,实际上是调用了被修饰后的函数`wrapper`。 这样,每次调用`say_hello`函数时,都会在执行前后打印一些信息。 装饰可以用于很多场景,比如日志记录、性能分析、权限检查等。它们提供了一种简洁而优雅的方式来修改函数的行为,而无需修改函数本身的定义。同时,装饰还可以堆叠使用,即一个函数可以被多个装饰修饰。 希望这个简单的示例能够帮助你理解Python函数装饰的基本概念和用法。如果你有更多的问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值