首页 > 编程语言 >什么是 Python 中的装饰器?

什么是 Python 中的装饰器?

时间:2023-01-21 17:22:38浏览次数:61  
标签:return 函数 Python demo 什么 sample 装饰 def

装饰器是Python中最强大的设计模式之一。装饰器用于向已创建的对象添加新功能,而无需修改其结构。使用装饰器,您可以轻松包装另一个函数以扩展包装的函数行为,并且无需永久修改即可完成。

函数是一等对象

在 Python 中,函数被视为一等对象,即我们可以将函数存储在变量中,从函数返回函数等。

下面是一些示例,显示 Python 中有助于理解装饰器的函数。

作为对象的函数

在此示例中,函数被视为对象。在这里,函数 demo() 被分配给 变量 −


# Creating a function def demo(mystr): return mystr.swapcase() # swapping the case print(demo('Thisisit!')) sample = demo print(sample('Hello'))

输出

tHISISIT!
hELLO

将函数作为参数传递

在此函数中作为参数传递。demo3() 函数调用 demo() 和 demo2() 函数作为参数。


def demo(text): return text.swapcase() def demo2(text): return text.capitalize() def demo3(func): res = func("This is it!") # Function passed as an argument print (res) # Calling demo3(demo) demo3(demo2)

输出

tHIS IS IT!
This is it!

现在,让我们围绕装饰器工作

Python 中的装饰器

在装饰器中,函数作为参数进入另一个函数,然后在包装器函数中调用。让我们看一个简单的例子:

@mydecorator
   def hello_decorator():
      print("This is sample text.")

以上也可以写成——

def demo_decorator():
   print("This is sample text.")

hello_decorator = mydecorator (demo_decorator)

装饰器示例


def demoFunc(x,y): print("Sum = ",x+y) # outer function def outerFunc(sample): def innerFunc(x,y): # inner function return sample(x,y) return innerFunc # calling demoFunc2 = outerFunc(demoFunc) demoFunc2(10, 20)

输出

Sum = 30

应用句法装饰器

上面的示例可以使用带有@symbol的装饰器来简化。通过在我们要装饰的函数之前放置 @ 符号来简化装饰器的应用 -


# outer function def outerFunc(sample): def innerFunc(x,y): # inner function return sample(x,y) return innerFunc @outerFunc def demoFunc(x,y): print("Sum = ",x+y) demoFunc(10,20)

输出

Sum = 30

标签:return,函数,Python,demo,什么,sample,装饰,def
From: https://www.cnblogs.com/10zhan/p/17063918.html

相关文章

  • Python——01.环境及安装
    Python介绍--Python是解释型,面向对象的语言,程序结构简洁,清晰--Python解释器分类:CPython(官方解释器):用C语言编写的Python解释器PyPy:用Python语言编写的Python......
  • 用Python写一个模拟过年礼花的程序
    介绍过年了,好不容易熬到疫情放开,也该放烟花放鞭炮庆祝下了,祝大家新年快乐,身体健康,万事如意,希望新的一年诸邪退散,春暖花开~主程序importpygame,math,time,random,......
  • Python网络编程之微信机器人
    系统设计用Python实现了一个微信机器人,在微信公众号内发送消息,可以根据消息内容进行自动回复搭建Flask服务器,接收微信服务器发送的消息,并做出回复根据微信服务器发送过......
  • 什么是Hebbian learning
    hebbianlearning并不是一个新的概念,早在1949唐纳德·赫布提出了赫布律(hebb'srules),简单表述为:我们可以假定,反射活动的持续与重复会导致神经元稳定性的持久性提升……当神......
  • python赋值和拷贝
    赋值,值相同,内存地址相同–函数参数传递。浅拷贝,值相同,内存地址不同。拷贝第一层内存地址的引用。第一层元素为可变元素。拷贝过的引用会跟着发生变化。否则不发生变化import......
  • 【python】Matplotlib库学习笔记
    Matplotlib是python的绘图库。以下内容主要介绍Matplotlib的子库pyplot。pyplot是常用的2D绘图模块,包含一系列绘图相关函数。plot()函数plot()函数可以用来绘制......
  • 【ABAQUS 二次开发笔记】使用keyword 、python和matlab一起处理Odb数据
    用conversionshellelement(S4R单元)建模层合板,有6层ply,每个lamina(ply)有3个integrationpoint,共计18个integrationpoint。我想得到集合SET-Middle-elem中所有integrati......
  • 安装 python in Linux: Ubuntu at WSL on windows
      安装ubuntu20.04appstore安装ubuntu安装异常:https://thegeekpage.com/wslregisterdistribution-failed-with-error-0x8007019e/    安装python3.8.1......
  • Python入门之数据类型转换
    """数据类型转换运算符算数运算符增强运算符"""#1.数据类型转换#intfloatstrstr_usb=input("请输入美元:")#类型转换str-->intin......
  • Python入门之数据类型
    """核心数据类型"""#1.Nonea01="张无忌"#接触变量与数据的绑定关系a01=None#使用None占位sex=None流程图:   #2.整形int#十进制nu......