Python中的装饰器是什么?

Python中的装饰器是什么?

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

更多Python相关文章,请阅读:Python 教程

函数是一等公民

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

下面是一些用于理解装饰器的Python函数示例。

函数作为对象

示例

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

# 创建一个函数
def demo(mystr):
   return mystr.swapcase()# 交换大小写

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!") # 将函数作为参数传递
   print (res)

# 调用
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)

# 外部函数
def outerFunc(sample):
   def innerFunc(x,y): # 内部函数
      return sample(x,y)
   return innerFunc

# 调用
demoFunc2 = outerFunc(demoFunc)
demoFunc2(10, 20)

输出

Sum = 30

应用语法装饰器

示例

以上示例可以使用带有@符号的装饰器简化。将@符号放在我们要装饰的函数之前,可以方便地应用装饰器−

# 外部函数
def outerFunc(sample):
   def innerFunc(x,y): # 内部函数
      return sample(x,y)
   return innerFunc

@outerFunc
def demoFunc(x,y):
   print("Sum = ",x+y)

demoFunc(10,20)

输出结果

Sum = 30

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程