美文网首页
Python 中修饰器

Python 中修饰器

作者: SevenBy | 来源:发表于2018-02-11 00:32 被阅读265次

修饰器就是一个返回函数的高阶函数

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from functools import wraps

def log(func):
    #@wraps(func)   #如果不加这句,log返回wrapper,那么hack.__name__ 就是 wrapper.
    def wrapper(*args,**kwargs):
        print('call %s'% func.__name__)
        return func(*args,**kwargs)
    return wrapper

@log
def hack():
    print('hello world !!!')

print(hack.__name__)

如果decorator本身需要传入参数,那就需要编写一个返回decorator的高阶函数,写出来会更复杂。比如,要自定义log的文本

def log(text):
    def decorator(func):
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator

这个3层嵌套的decorator用法如下:

@log('execute')
def now():
    print('hello world!')

和两层嵌套的decorator相比,3层嵌套的效果是这样的:

>>> now = log('execute')(now)
Python 中修饰器

相关文章

  • Python 中修饰器

    修饰器就是一个返回函数的高阶函数 如果decorator本身需要传入参数,那就需要编写一个返回decorator的...

  • Python装饰器高级用法

    转载至:Python装饰器高级用法 在 Python 中, 装饰器 一般用来修饰函数,实现公共功能,达到代码复用的...

  • Python中property中的小坑

    刚刚了解了python中的@property的使用,property本质是python中的一个内置修饰器。使用大概...

  • Python修饰器

    前话: python的修饰器可以说是python语言最有灵性的一个功能了,看到网上有各种乱乱的文章,所以想自己写得...

  • python修饰器

    介绍修饰器之前首先要介绍两个参数 基础用法 传递参数 *报错 这个修饰器可以简化 functools已经封装好了

  • python修饰器

    1 什么是装饰器 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象。本质就是函数,功能就...

  • python修饰器

    1、参数args与kwargs: *args是元组,如def fun(args): pass 传过去的参数是元组形...

  • python 修饰器

    python编程时首次遇到@staticmethod,就开始了我的修饰器之路 下面链接作者写的很好 https:/...

  • Python @property 详解

    一、概述 python中 @property 是python的一种装饰器,是用来修饰方法的。我们可以使用@pro...

  • 11.装饰器(注解)、深浅拷贝

    一、装饰器 1). 装饰器概述 装饰器:Python中的代理模式的实现。 对其他函数进行增强。 原则:不修改被修饰...

网友评论

      本文标题:Python 中修饰器

      本文链接:https://www.haomeiwen.com/subject/krqxtftx.html