0基础学Python(6) —— 关于装饰器
2017-12-22 21:14
841 查看
#第一步:基本函数
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
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
相关文章推荐
- [python基础]关于装饰器
- python基础 之 装饰器详解
- python基础---装饰器模式
- Python:关于装饰器
- Python开发基础-Day7-闭包函数和装饰器基础
- Xman整理篇___关于Python的一些基础方法及函数
- 关于python的基础知识17 -- 列表、数组和矩阵
- 关于python的基础知识15 -- 语法错误和异常
- Python基础-装饰器-Decorator
- Python语法基础——关于全局变量与局部变量
- python基础7之闭包与装饰器
- python基础系列(六)之装饰器
- 【语言处理与Python】4.3风格的问题/4.4函数:结构化编程的基础/4.5更多关于函数
- 一些关于Python的基础知识 - 千月的python linux 系统管理指南学习笔记(3)
- Python 装饰器基础
- python中关于装饰器的理解
- 关于python的基础知识10--数据分析和数值计算
- Python基础<十九:函数式装饰器>
- [python基础]关于中文编码和解码那点事儿
- Python语法基础——关于全局变量与局部变量