简单讲讲python装饰器

作者: 生信编程日常 | 来源:发表于2020-04-07 16:02 被阅读0次

装饰器其实是闭包的一种,如果有重复功能需要实现的话,装饰器是个不错的选择。比如每个函数需要添加一个提示开始的功能:

def start(func):
    
    def wrapper():
        print("Now function {} starts!".format(func.__name__))
        return func()
    return wrapper

def greet():
    print("Hello, everyone!")
    
def morning():
    print("Good Morning!")

greet = start(greet)
greet()

morning = start(morning)
morning()

我们需要这两个函数的开始的提醒,这样写可以避免在greet和morning函数中重复的写

print("Now function {} starts!".format(func.__name__))

这句话,不过这样写还可以进一步省略,即:

def start(func):
    
    def wrapper():
        print("Now function {} starts!".format(func.__name__))
        return func()
    return wrapper
@start
def greet():
    print("Hello, everyone!")
    
@start
def morning():
    print("Good Morning!")

greet()
morning()

如果function需要参数的话可以用*args和**kwargs:

def start(func):
    
    def wrapper(*args, **kwargs):
        print("Now function {} starts!".format(func.__name__))
        return func(*args, **kwargs)
    return wrapper

@start
def greet(name):
    print("Hello, {}!".format(name))
    
@start
def morning(name):
    print("Good Morning, {}!".format(name))

greet('Kura')
morning('Kura')

返回:
Now function greet starts!
Hello, Kura!
Now function morning starts!
Good Morning, Kura!

公众号二维码.jpg

相关文章

  • 简单讲讲python装饰器

    装饰器其实是闭包的一种,如果有重复功能需要实现的话,装饰器是个不错的选择。比如每个函数需要添加一个提示开始的功能:...

  • python 装饰器

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

  • 9个Python 内置装饰器: 显著优化代码

    装饰器是应用“Python 之禅”哲学的最佳 Python 特性。装饰器可以帮助您编写更少、更简单的代码来实现复杂...

  • python-面试QA

    语言 讲讲日常开发中都用到了那些Python内置的模块 推荐一本看过较好的python书籍? 装饰器、迭代器、ye...

  • Python的自定义超时机制——装饰器的妙用

    装饰器 关于装饰器的入门,可以参考这篇文章:12步轻松搞定python装饰器简单来说,装饰器其实就是一个闭包(闭包...

  • Python Decorator

    flask中有很多装饰器,今天来整理下Python中装饰器的相关概念。 1. 最简单的装饰器 我们常常可以看到类似...

  • 装饰器模式

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

  • python (类/函数)对一个函数应用多个装饰器 执行过程

    网上很多讲解单个python 装饰器的文章,基础知识我们简单描述。 首先了解装饰器是用来干什么的,装饰器可以增加函...

  • python中的装饰器

    python装饰器详解 Python装饰器学习(九步入门) 装饰器(decorator) 就是一个包装机(wrap...

  • [译] Python装饰器Part II:装饰器参数

    这是Python装饰器讲解的第二部分,上一篇:Python装饰器Part I:装饰器简介 回顾:不带参数的装饰器 ...

网友评论

    本文标题:简单讲讲python装饰器

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