当前位置:   article > 正文

python基础语法 | 装饰器_python def draw

python def draw

装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。
这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能

实例 把一个形状装饰上不同的颜色,同时又不改变形状类。

装饰器模式类图
若使用Java实现,则类图如上图所示,这里不进行过多的介绍,本章主要介绍python中的装饰器。

函数

在介绍python的装饰器之前,先了解一下python的函数,与Java不同的是,在python中一切皆对象,函数也是对象,可以进行赋值,可以作为参数,函数中还可以定义函数,也可以返回函数,看下四个例子:

例1:赋值

>>> # 定义了一个函数
>>> def rectangle():
... 	print('draw a rectangle')
... 
>>> rectangle()
draw a rectangle

>>> # 将指向函数的变量rectangle赋值给变量draw
>>> draw=rectangle
>>> #此时,变量draw也指向方法所在的地址
>>> draw
<function rectangle at 0x0000021406108D30>
>>> draw()
draw a rectangle

>>> # 函数赋值时,rectangle后不能加括号,rectangle()代表执行函数,然后将返回值赋值给变量draw
>>> draw=rectangle()
draw a rectangle
>>> type(draw)
<class 'NoneType'>

>>> # 删除变量rectangle并不会删除内存中的方法
>>> draw=rectangle
>>> del rectangle
>>> draw
<function rectangle at 0x0000021406108D30>
>>> rectangle()
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
NameError: name 'rectangle' is not defined
>>> draw()
draw a rectangle
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

例2:将函数作为参数传递

>>> # 定义了一个函数
>>> def rectangle():
... 	print('draw a rectangle')
... 
>>> # 定义一个函数,该函数的参数是另外一个函数
>>
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/303667?site
推荐阅读
相关标签
  

闽ICP备14008679号