0基础学Python(6) —— 关于装饰器
来源:互联网 发布:win7系统数据恢复 编辑:程序博客网 时间:2024/06/03 22:42
#第一步:基本函数
def cat():
print('小猫咪喵喵喵')
cat()
#第二步:扩展功能(不能直接修改原来的函数)
def zhuangshi():
print('干净的小白白')
cat()
print('他的好朋友是小花花')
def cat():
print('小猫咪喵喵喵')
cat = zhuangshi()
#第三部:实现基本装饰功能
def zhuangshi(func):
def inner():
print('干净的小白白')
func()
print('他的好朋友是小花花')
return inner
def cat():
print('小猫咪喵喵喵')
cat = zhuangshi(cat)
cat()
#第四步:语法糖方式实现函数
def zhuangshi(func):
def inner():
print('干净的小白白')
func()
print('他的好朋友是小花花')
return inner
@zhuangshi
def cat():
print('小猫咪喵喵喵')
cat()
#第五步:带有参数的函数的装饰器
def zhuangshi(func):
def inner(who,where):
print('干净的小白白')
var = func(who,where)
print('他的好朋友是小花花')
return var
return inner
@zhuangshi
def cat(who,where):
print('小猫咪跟'+ who + '在' + where + '一起喵喵喵')
return '小花花学不会喵喵喵'
res = cat('小花花','厨房')
print(res)
#第六步:带有收集参数的函数的装饰器
def zhuangshi(func):
def inner(*who,**where):
print('干净的小白白')
var = func(*who,**where)
print('他的好朋友是小花花')
return var
return inner
@zhuangshi
def cat(*who,**where):
print('小猫咪跟',who,'在',where,'一起喵喵喵')
return '小花花学不会喵喵喵'
res = cat('小花花','小黑黑',cf = '厨房',ct = '餐厅')
print(res)
#第七步:带有参数的装饰器
def outer(arg):
def zhuangshi(func):
def inner():
if arg == '小花花':
print('小白白和小花花一起玩皮球')
elif arg == '小黑黑':
print('小黑黑是别人家的小狗')
var = func()
if arg == '小花花':
print('小白白累的时候就倚着小花花睡觉')
elif arg == '小黑黑':
print('只有周末才能和小黑黑一起玩')
return var
return inner
return zhuangshi
@outer('小花花')
def cat():
print('小白白的好朋友是小狗小花花')
return '小花花从来不欺负小白白'
res = cat()
print(res)
#第八步:使用类作为装饰器的参数
class Cat:
def xcat():
print('小白白是最可爱的小猫咪')
def dcat():
print('小白白会长成可爱的大猫咪')
class Dog:
def xdog():
print('小花花也是最可爱的小猫咪')
def ddog():
print('小花花现在就已经很大了')
def outer(arg):
def zhuangshi(func):
def inner():
if arg == Cat:
arg.xcat()
elif arg == Dog:
arg.xdog()
var = func()
if arg == Cat:
arg.dcat()
elif arg == Dog:
arg.ddog()
return var
return inner
return zhuangshi
@outer(Cat)
def cat():
print('小白白的好朋友是小狗小花花')
return '小花花从来不欺负小白白'
res = cat()
print(res)
#第九步:使用类作为装饰器
class Cat:
def __init__(self,arg):
#print(arg)
self.abc = arg
def __call__(self,val):
#print(val)
self.func = val
return self.inner
def inner(self):
print('小白白动不动的就撒娇')
self.func()
print('小花花特别宠溺小白白')
#return self.func
@Cat('hao')
def cat():
print('小白白的好朋友是小狗小花花')
cat()
#第十步:为类添加装饰器
def zhuangshi(arg):
def inner():
print('干净的小白白')
print('他的好朋友是小花花')
return arg()
return inner
@zhuangshi
class Cat:
print('小白白的好朋友是小狗小花花')
Cat()
#第十一步:装饰器的嵌套
def zhuangshi1(func):
def inner():
print('干净的小白白')
func()
print('他们永远都是好朋友')
return inner
def zhuangshi2(func):
def inner():
print('可爱的小花花')
func()
print('他们俩个喜欢一起玩耍')
return inner
@zhuangshi1
@zhuangshi2
def cat():
def cat():
print('小猫咪喵喵喵')
cat()
#第二步:扩展功能(不能直接修改原来的函数)
def zhuangshi():
print('干净的小白白')
cat()
print('他的好朋友是小花花')
def cat():
print('小猫咪喵喵喵')
cat = zhuangshi()
#第三部:实现基本装饰功能
def zhuangshi(func):
def inner():
print('干净的小白白')
func()
print('他的好朋友是小花花')
return inner
def cat():
print('小猫咪喵喵喵')
cat = zhuangshi(cat)
cat()
#第四步:语法糖方式实现函数
def zhuangshi(func):
def inner():
print('干净的小白白')
func()
print('他的好朋友是小花花')
return inner
@zhuangshi
def cat():
print('小猫咪喵喵喵')
cat()
#第五步:带有参数的函数的装饰器
def zhuangshi(func):
def inner(who,where):
print('干净的小白白')
var = func(who,where)
print('他的好朋友是小花花')
return var
return inner
@zhuangshi
def cat(who,where):
print('小猫咪跟'+ who + '在' + where + '一起喵喵喵')
return '小花花学不会喵喵喵'
res = cat('小花花','厨房')
print(res)
#第六步:带有收集参数的函数的装饰器
def zhuangshi(func):
def inner(*who,**where):
print('干净的小白白')
var = func(*who,**where)
print('他的好朋友是小花花')
return var
return inner
@zhuangshi
def cat(*who,**where):
print('小猫咪跟',who,'在',where,'一起喵喵喵')
return '小花花学不会喵喵喵'
res = cat('小花花','小黑黑',cf = '厨房',ct = '餐厅')
print(res)
#第七步:带有参数的装饰器
def outer(arg):
def zhuangshi(func):
def inner():
if arg == '小花花':
print('小白白和小花花一起玩皮球')
elif arg == '小黑黑':
print('小黑黑是别人家的小狗')
var = func()
if arg == '小花花':
print('小白白累的时候就倚着小花花睡觉')
elif arg == '小黑黑':
print('只有周末才能和小黑黑一起玩')
return var
return inner
return zhuangshi
@outer('小花花')
def cat():
print('小白白的好朋友是小狗小花花')
return '小花花从来不欺负小白白'
res = cat()
print(res)
#第八步:使用类作为装饰器的参数
class Cat:
def xcat():
print('小白白是最可爱的小猫咪')
def dcat():
print('小白白会长成可爱的大猫咪')
class Dog:
def xdog():
print('小花花也是最可爱的小猫咪')
def ddog():
print('小花花现在就已经很大了')
def outer(arg):
def zhuangshi(func):
def inner():
if arg == Cat:
arg.xcat()
elif arg == Dog:
arg.xdog()
var = func()
if arg == Cat:
arg.dcat()
elif arg == Dog:
arg.ddog()
return var
return inner
return zhuangshi
@outer(Cat)
def cat():
print('小白白的好朋友是小狗小花花')
return '小花花从来不欺负小白白'
res = cat()
print(res)
#第九步:使用类作为装饰器
class Cat:
def __init__(self,arg):
#print(arg)
self.abc = arg
def __call__(self,val):
#print(val)
self.func = val
return self.inner
def inner(self):
print('小白白动不动的就撒娇')
self.func()
print('小花花特别宠溺小白白')
#return self.func
@Cat('hao')
def cat():
print('小白白的好朋友是小狗小花花')
cat()
#第十步:为类添加装饰器
def zhuangshi(arg):
def inner():
print('干净的小白白')
print('他的好朋友是小花花')
return arg()
return inner
@zhuangshi
class Cat:
print('小白白的好朋友是小狗小花花')
Cat()
#第十一步:装饰器的嵌套
def zhuangshi1(func):
def inner():
print('干净的小白白')
func()
print('他们永远都是好朋友')
return inner
def zhuangshi2(func):
def inner():
print('可爱的小花花')
func()
print('他们俩个喜欢一起玩耍')
return inner
@zhuangshi1
@zhuangshi2
def cat():
print('小白白的好朋友是小狗小花花')
Python学习交流、资源共享群:563626388 QQ
阅读全文
0 0
- 0基础学Python(6) —— 关于装饰器
- 菜鸟学python(05)——装饰器
- Python——装饰器基础
- python基础——装饰器
- python基础——装饰器
- Python 基础 —— 装饰器(1)
- Python 基础 —— 装饰器(2)
- python基础(06)——装饰器
- 兄弟连学Python(6)--装饰器的简单认识
- python基础----装饰器
- Python 装饰器基础
- python关于装饰器
- Python:关于装饰器
- python—装饰器
- python—装饰器
- python基础—(高阶,匿名,偏)函数 | 装饰器
- 0基础学Python(7) —— 快速排序
- Python基础17--装饰器
- 操作进程的工具类(获取进程总数,获取总内存,获取可用内存,获取进程信息,杀死进程)
- JavaEE学习总结(1)
- 数据结构实验之查找二:平衡二叉树
- MySql 事务&锁机制
- Delphi中窗体的方法
- 0基础学Python(6) —— 关于装饰器
- Matlab代码实现图像的傅里叶变换
- 【ML学习笔记】12:k-近邻算法的demo
- python代码问题
- Mininet学习笔记
- 求数组中的第三大数
- 集成GoogleMap正确的签名打包姿势
- qt 遍历目录
- JavaScript Table排序