`
djangofan
  • 浏览: 36290 次
社区版块
存档分类
最新评论

python 的函数Decorators

 
阅读更多

Decorators是python中比较难以理解的东西,当然如果你接触过java的annotation,会发现这个Decorators在语法上非常的相似,但是两者的设计动机却没什么共同点;

这里讲的python中的decorators是对python中的function/method做装饰,这些修饰仅是当声明一个函数或者方法的时候,才会应用的额外调用。

python中的decorator分为有参数的和无参数的两种:

@deco
def foo(): pass

等价:foo = deco(foo)

 

有参数的decorator等价:

@deco(deco_args)
def foo(): pass

等价:foo = deco(deco_args)(foo)

 

从上面做的两个等价可以看出:deco本身是一个函数,其接受被修饰的方法作为参数,deco返回的应该也是一个function/method,这个返回的function应该和被修饰的func具有相同的参数列表和返回值(一般是return func()).

decorators的用途可以类比java中的aop概念,为方法引入通用的功能,例如log、perfomance等;例如:(eg from core python programming)

 

 

result:

Called:
function: <function hello at 0x555f0>
args: ('World!',)
kargs: {}
time delta: 0.000471115112305

 

解释下这个decorator的工作方式:

hello = logged("post")(hello)

logged("post")的返回值是post_logged

hello = post_logged(hello)

 

分享到:
评论

相关推荐

    Python函数实例.zip

    Python函数是编程语言中至关重要的一个概念,它允许我们将代码组织成可重用的模块,以便在需要时轻松调用。在Python中,函数是一种封装常用操作的方式,可以接受输入参数,执行特定任务,并可能返回结果。在这个...

    各类速查表汇总-Python Decorators

    Python Decorators是一种函数设计模式,允许用户在不改变原有函数定义的情况下,为函数添加额外的功能。它是在函数定义前使用@符号加上装饰器函数名的方式来实现的。装饰器本质上是一个接受函数作为参数并返回一个新...

    清华大学精品Python学习PPT课件-第6章 Python函数.rar

    Python函数是编程中的核心概念,尤其对于初学者来说,理解和掌握Python函数的使用至关重要。清华大学的这门精品课程深入浅出地介绍了这一主题,旨在帮助学生深入理解并熟练运用Python函数。以下是对PPT课件内容的...

    python-装饰器Decorators.pdf

    #### 二、Python中的函数特性 在Python中,函数具有以下特性: 1. **一切皆对象**:Python中的所有东西都是对象,包括函数。这意味着你可以像处理其他对象一样处理函数。 2. **在函数中定义函数**:可以在一个函数...

    电信设备-Python函数运行信息的自动记录方法及系统.zip

    通过装饰器(decorators)可以方便地将日志功能应用到各个函数上,无需在每个函数内部手动编写日志代码。 首先,我们需要导入logging模块并配置日志处理器。这通常包括设置日志级别、创建日志文件、指定日志格式等...

    python知识.pdf

    装饰器(Decorators)则是用于修改或增强函数或方法功能的技术,它允许程序员在不改变原有函数的基础上增加额外的功能。 Python也支持深拷贝和浅拷贝。浅拷贝指的是复制一个对象的内容,而深拷贝则会递归复制对象...

    Functional Python Programming(PACKT,2015)

    Python’s easy-to-learn and extensible...Design and implement decorators to create composite functions Use functions like max(), min(), map(), filter(), and sorted() Write advanced higher-order functions

    python3.6.5参考手册 chm

    PEP 3129: Class Decorators PEP 3141: A Type Hierarchy for Numbers The fractions Module Other Language Changes Optimizations Interpreter Changes New and Improved Modules The ast module The future_...

    Python-funcy炫酷又实用的函数式工具

    8. **函数装饰器(decorators)** 装饰器是Python的一大特色,funcy提供了几个有用的装饰器,如`@lazy`, `@cached`, 和 `@seq_method`,分别用于实现惰性计算、缓存结果和将函数转化为类方法。 9. **链式操作(chain)...

    Python库 | comapsmarthome-lambda-decorators-1.0.1.tar.gz

    本文将重点探讨名为`comapsmarthome-lambda-decorators`的Python库,它主要用于Lambda函数的装饰器实现,版本为1.0.1。 Lambda函数,源自Python中的匿名函数概念,是一种简洁的定义单行、小型功能的表达方式。它们...

    Python库 | aws_lambda_decorators-0.45-py3-none-any.whl

    `aws_lambda_decorators` 是一个Python库,专为Amazon Web Services(AWS)的Lambda服务设计,用于简化函数装饰器的使用,从而更高效地开发和管理Lambda函数。这个库的版本为0.45,兼容Python 3解释器,不依赖特定的...

    Python库 | aws-lambda-decorators-0.51.tar.gz

    《Python库aws-lambda-decorators-0.51:构建高效AWS Lambda函数》 在IT行业中,Python作为一门强大的编程语言,广泛应用于各种场景,特别是在后端开发领域。随着云计算的发展,Amazon Web Services(AWS)提供的...

    Python-一些Python示例

    在Python中,还有许多其他高级主题,如装饰器(decorators)用于修改或增强函数行为,生成器(generators)用于创建迭代器,以及上下文管理器(context managers)用于资源的自动获取和释放,如使用with语句处理文件。...

    学习Python过程中的知识汇总

    此外,Python还支持装饰器(decorators),这是一种高级技巧,可以修改或增强函数、类等对象的行为。 在Python中,还有几个著名的第三方库,如requests库用于HTTP请求,BeautifulSoup和Scrapy用于网页抓取,...

    Python进阶

    这种灵活的参数传递机制使得Python函数更加强大和方便。 调试(Debugging)是任何编程活动都不可或缺的一环。在Python中,有多种方式可以帮助开发者进行代码调试,比如打印输出变量值、使用断言(assert)、编写...

    Python进阶.pdf

    - 装饰器是Python的一种函数,用于修改或增强其他函数的功能,如添加日志、性能监控等。 - `@decorator`语法糖使得装饰器使用更加简洁。 - 装饰器可以接收参数,增加其灵活性,实现更复杂的逻辑。 7. **Global和...

    python-exercises:python函数,请求,装饰器...

    首先,我们来谈谈**Python函数**。函数是一段可重用的代码块,它执行特定任务并可能返回结果。在Python中,定义函数使用`def`关键字,例如: ```python def greet(name): return f"Hello, {name}!" print(greet(...

    Python 进阶

    装饰器(decorators)是Python语言的一个重要特性,它允许程序员在不修改函数本身代码的情况下,为函数添加新的功能。装饰器本质上是一个函数,它可以接收一个函数作为参数并返回一个新的函数。使用装饰器可以实现如...

    Python库 | kafka_client_decorators-0.9.2-py3-none-any.whl

    装饰器是Python编程中的一种高级特性,可以用来修改或扩展函数、方法甚至类的行为。`kafka_client_decorators`库利用装饰器,允许开发者无需深度理解Kafka底层机制,就能轻松地处理消费消息、错误处理、重试策略等...

    python趣味编程100例(99个)

    此外,装饰器(decorators)和上下文管理器(context managers)也可能出现在这些案例中,它们是Python中用于代码重用和资源管理的强大工具。 面向对象编程(OOP)是Python的另一个关键方面。案例可能涵盖类(classes)的...

Global site tag (gtag.js) - Google Analytics