返回顶部
首页 > 资讯 > 后端开发 > Python >python之装饰器(函数)
  • 512
分享到

python之装饰器(函数)

函数python 2023-01-30 23:01:55 512人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

1. 装饰器   遵循的原则:     开闭原则:   对功能的扩展开放  对代码的修改是封闭 # 通用装饰器写法 # 存在的意义: 在不破坏原有函数和原有函数调用的基础上,给函数添加新的功能. def wrapper

1. 装饰器
  遵循的原则:

    开闭原则:   对功能的扩展开放  对代码的修改是封闭

# 通用装饰器写法
# 存在的意义: 在不破坏原有函数和原有函数调用的基础上,给函数添加新的功能.

def wrapper(fn): # fn是目标函数
    def inner(*args, **kwargs): # 为了目标函数的传参
        '''在执行目标函数之前'''
        ret = fn(*args, **kwargs) # 调用目标函数, ret是目标函数的返回值
        '''在执行目标函数之前'''
        return ret # 把目标函数返回值返回, 保证函数正常的结束
    return inner
@wrapper  # target_func = wrapper(target_func)
def target_func():
    pass
target_func() # 此时执行的是inner

 2. 带参数的装饰器

def wrapper_out(flag): # 装饰器本身的参数
    def wrapper(fn): # 目标函数
        def inner(*args, **kwargs): # 目标函数需要的参数
            if flag == True: # 判断是否需要装饰
                print('问问老板,行情怎么样啊?')
                ret = fn(*args, **kwargs)
                print('骗我!!')
                return ret
            else: # 不需要装饰
                ret = fn(*args, **kwargs)
                return ret
        return inner
    return wrapper

@wrapper_out(True) # 先执行wrapper_out(True) 返回一个装饰器, 再和@拼接 -> @装饰器
# @wrapper_out(False) # 走,开团
def yue(): # 被wrapper装饰
    print('走,开团')

yue()

3. 同一个函数被多个装饰器装饰

@wrapper1
@wrapper2
@wrapper3
def func():
     pass

# 1  2  3  func 3  2  1

 

--结束END--

本文标题: python之装饰器(函数)

本文链接: https://lsjlt.com/news/180467.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python之装饰器(函数)
    1. 装饰器   遵循的原则:     开闭原则:   对功能的扩展开放  对代码的修改是封闭 # 通用装饰器写法 # 存在的意义: 在不破坏原有函数和原有函数调用的基础上,给函数添加新的功能. def wrapper...
    99+
    2023-01-30
    函数 python
  • Python函数式编程之装饰器
    原则:对修改是封闭的,对扩展是开放的,方法:一般不修改函数或者类,而是扩展函数或者类一:装饰器 允许我们将一个提供核心功能的对象和其他可以改变这个功能的对象’包裹‘在一起, 使用装饰对象的任何对象与装饰前后该对象的交互遵循完全...
    99+
    2023-01-30
    函数 Python
  • python装饰器1:函数装饰器详解
    装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 先混个眼熟 谁可以作为装饰器(可以将谁编写成装饰器): 函数 方法 实现了__call__的可调用类 装饰器可以去装饰谁(谁可以被装饰): 函数 方法 类 基础...
    99+
    2023-01-30
    详解 函数 python
  • Python装饰器-闭包与函数装饰器
    一、闭包在学习装饰器前,需要先了解闭包的概念。形成闭包的要点:函数嵌套将内部函数作为外部函数的返回值内部函数必须要使用到外部函数的变量下面以一个计算列表平均值的案例来讲解闭包:def make_average(): # 创建一个列表,用来保...
    99+
    2023-05-14
    Python 函数 装饰器
  • Python函数的装饰器
    函数的装饰器. 1. 装饰器   开闭原则:         对功能的扩展开放         对代码的修改是封闭     通用装饰器语法: def wrapper(fn): def inner(*args, **kw...
    99+
    2023-01-30
    函数 Python
  • 详解Python函数式编程之装饰器
    目录一、装饰器的本质:函数闭包(functionclosure):二、装饰器使用方法:保留函数参数和返回值的函数闭包:三、多个装饰器的执行顺序:四、创建带参数的装饰器:总结一、装饰器...
    99+
    2024-04-02
  • Python之装饰器
    在Python中一切皆对象,函数是一等对象。这意味着可以通过名字引用函数。>>> a=123 >>> a 123 >>> name='zeng' >>> name 'z...
    99+
    2023-01-31
    Python
  • Python中怎么使用装饰器装饰函数
    这篇文章将为大家详细讲解有关Python中怎么使用装饰器装饰函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。***个函数deco是装饰函数,它的参数就是被装饰的函数对象。我们可以在deco...
    99+
    2023-06-17
  • Python 函数装饰器详解
    目录使用场景授权(Authorization)日志(Logging)带参数的装饰器在函数中嵌入装饰器装饰器类总结装饰器(Decorators)是 Python 的一个重要部分。简单地...
    99+
    2024-04-02
  • Python装饰器、内置函数之金兰契友
    装饰器:装饰器的实质就是一个闭包,而闭包又是嵌套函数的一种。所以也可以理解装饰器是一种特殊的函数。因为程序一般都遵守开放封闭原则,软件在设计初期不可能把所有情况都想到,所以一般软件都支持功能上的扩展,而对源代码的修改是封闭的。开放封闭原则...
    99+
    2023-01-30
    契友 函数 Python
  • Python中怎么使用装饰器来装饰函数
    在Python中,装饰器是一种函数,它接受一个函数作为参数,并返回一个新的函数。通过使用装饰器,可以在不修改原始函数代码的情况下添加...
    99+
    2024-03-12
    Python
  • python中函数总结之装饰器闭包详解
    1、前言 函数也是一个对象,从而可以增加属性,使用句点来表示属性。 如果内部函数的定义包含了在外部函数中定义的对象的引用(外部对象可以是在外部函数之外),那么内部函数被称之为闭包。 2、装饰器 装饰器就是包...
    99+
    2022-06-04
    详解 函数 python
  • Python 函数装饰器怎么用
    这篇文章主要介绍Python 函数装饰器怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、什么是函数装饰器函数装饰器是Python提供的一种增强函数功能的标记函数;装饰器是可调用的函数对象,其参数是另...
    99+
    2023-06-21
  • day20-python之装饰器
    1.装饰器 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import time 4 def cal(l): 5 start_time=time.time() ...
    99+
    2023-01-31
    python
  • 浅析Python编写函数装饰器
    编写函数装饰器 本节主要介绍编写函数装饰器的相关内容。 跟踪调用 如下代码定义并应用一个函数装饰器,来统计对装饰的函数的调用次数,并且针对每一次调用打印跟踪信息。 class tracer: def ...
    99+
    2022-06-04
    函数 Python
  • 深入了解Python装饰器函数
    本篇文章给大家带来了关于python的相关知识,其中主要整理了装饰器函数的相关问题,包括了装饰器的形成过程、本质与功能、进阶与优化等等内容,下面一起来看一下,希望对大家有帮助。假如我写了一个函数 fdef f(): print(&#...
    99+
    2022-06-26
    python
  • Python装饰器函数怎么使用
    这篇文章主要介绍了Python装饰器函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python装饰器函数怎么使用文章都会有所收获,下面我们一起来看看吧。假如我写了一个函数 fdef f()...
    99+
    2023-07-02
  • Python函数装饰器--实例讲解
    一、装饰器定义:1.装饰器的本质为函数;2.装饰器是用来完成被修饰函数的附加功能的所以:装饰器是用来完成被修饰函数附属功能的函数 装饰器的要求:1.不能修改被修饰函数的源代码;2.不能更改被修饰函数的运行方式;3.上述两者缺一不可。 二、装...
    99+
    2023-01-31
    函数 实例 Python
  • Python函数装饰器应用教程
    目录一、什么是函数装饰器二、函数装饰器的执行时机三、变量作用域四、闭包五、保留函数的元数据七、使用lru_cache缓存函数执行结果八、使用singledispatch实现泛型函数九...
    99+
    2024-04-02
  • python进阶之装饰器
    一.无参装饰器 问题:如何计算一段程序的运行时间? 先看一段简单代码: 1 import time 2 def func(): 3 start = time.time() # 记录程序开始时间 4 time.sleep(...
    99+
    2023-01-30
    进阶 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作