美文网首页
Python中@装饰器的作用

Python中@装饰器的作用

作者: A丶英雄 | 来源:发表于2018-05-15 15:39 被阅读34次

转载请注明出处:https://www.jianshu.com/u/0d277af5103c

要了解python中@装饰器的作用,首先要记住这么几点:

  • 1 . 装饰器符号“@”属于语法糖,什么意思呢?就是说,我不按照@装饰器的语法要求来写,而是按照一般python的语法要求来写完全可以。那么用@装饰器的格式来写的目的就是为了书写简单方便

  • 2. 装饰器的作用是什么呢? 简单的理解就是:装饰原有的函数。什么意思呢?比如有一个函数func(a, b),它的功能是求a,b的差值,我现在有一个需求,就是想对函数功能再装饰下,求完差值后再取绝对值,但是不能在func函数内部实现,这时候就需要装饰器函数了,比如func = decorate(func)函数,将func函数作为参数传递给decorate函数,由decorate来丰富func函数,丰富完成后再返回给func,此时func的功能就丰富了。

  • 3.python的常识,函数和其他任何东西一样,都是对象。这意味着可以将函数当做实参传递给函数,或者在函数中将函数作为返回值返回。例码验证:

def add(x, y):
... return x + y
def sub(x, y):
... return x - y
def apply(func, x, y): # 1
... return func(x, y) # 2
apply(add, 2, 1) # 3
3
apply(sub, 2, 1)
1
了解上述观点后,可以先不用@符号来写一个简单的装饰器
def decorate(func):

def decorate(func):

def inner(a, b):

    ret = func(a, b):

    return abs(ret)

return inner

def sub(a, b):

return a-b

sub(3, 4)

... -1

sub = decorate(sub)

sub(3, 4)

1

对于sub = decorate(sub)的理解。 最终会将inner的值传给sub ,此时执行sub(3, 4),其实是执行decorate中的inner,所以为1.

那么为了书写方便,将sub=decorate(sub)换为@decorate,并放在sub的定义面前,即:

@decorate

def sub(a, b):

return a-b

只是书写不同,结果相同。

希望可以帮助到大家!

相关文章

  • #抬抬小手学Python# Python 中级知识之装饰器

    函数装饰器 装饰器(Decorators)在 Python 中,主要作用是修改函数的功能,而且修改前提是不变动原函...

  • 你必须学写 Python 装饰器的五个理由

    你必须学写Python装饰器的五个理由 ----装饰器能对你所写的代码产生极大的正面作用 Python装饰器是很容...

  • Python中@装饰器的作用

    转载请注明出处:https://www.jianshu.com/u/0d277af5103c 要了解python中...

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

  • python 装饰器

    一、我们在python语言中常用@classmethod、@staticmethod这个装饰器,装饰器的作用简单来...

  • Python-02进阶-02装饰器

    Python-00装饰器 装饰器 [toc] TODO 总结 装饰器的作用就是为已经存在的函数或对象添加额外的功能...

  • Python装饰器与闭包!

    闭包是Python装饰器的基础。要理解闭包,先要了解Python中的变量作用域规则。 变量作用域规则 首先,在函数...

  • Python进阶——面向对象

    1. Python中的@property   @property是python自带的装饰器,装饰器(decorat...

  • TypeScript: 类的装饰器(三)

    带参数的类的装饰器 学习 python 的同学应该知道,python 中也有装饰器,而且 python 中的众多框...

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

网友评论

      本文标题:Python中@装饰器的作用

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