标签:return 目标 返回值 函数 nbsp python装饰器 开发 div def
一.开闭原则
对功能拓展的开放
对代码修改的封闭 可以更好的维护和开发
二.装饰器
1.个人理解:装饰器就是把原来需要修改的函数修改好,重新给赋值(赋值成原来的名字).名字一样功能增加,但是只能在之前或者之后加功能
2.意义:
在不破坏原有函数和原有函数调用的基础上,给函数添加新功能(python里的动态代理)
3.通用装饰器的写法:
def warrper(fn): # 调用目标函数
def inner(*args,**kwargs): # 在inner里加功能 接收到的是元组
"""在调用函数之前加入功能"""
ret = fn(*args,**kwargs) # ret 是接收目标函数的返回值 打散传给形参
"""在调用函数之后加入功能"""
return ret # 返回调用的目标函数返回值 保证函数正常结束
return inner
@warrper # 语法糖,等价于 target_fn = warrper(target_fn)
def target_fn():
pass
三.带参的装饰器
1.带参的装饰器就是给装饰器加个开关,参数就是开关.
2.带参装饰器写法:
def warrper_out(flag): # 装饰器本身的参数
def warrper(fn): #目标函数
def inner(*args,**kwargs):
if flag == True:
print("问问行情")
ret = fn(*args,**kwargs)
print("骗人")
return ret
else:
ret = fn(*args, **kwargs)
return ret
return inner
return warrper
@warrper_out(True) # 语法糖 @装饰器
def yue():
print("走 约")
yue()
四.多个装饰器修饰同一个函数
多个装饰器修饰同一个函数取就近 一层一层
# def warpper0(fn):
# def inner(*args,**kwargs):
# print("111")
# ret = fn(*args,**kwargs)
# print("222")
# return ret
# return inner
#
# def warpper1(fn):
# def inner(*args,**kwargs):
# print("333")
# ret = fn(*args,**kwargs)
# print("444")
# return ret
# return inner
#
# def warpper2(fn):
# def inner(*args,**kwargs):
# print("555")
# ret = fn(*args,**kwargs)
# print("666")
# return ret
# return inner
#
#
#
# @warpper0 # 折返
# @warpper1
# @warpper2
# def func():
# print("我是func")
#
# func() # 0 1 2 func 2 1 0 先用2装饰 再用1 再用0
标签:return 目标 返回值 函数 nbsp python装饰器 开发 div def
原文地址:https://www.cnblogs.com/q767498226/p/10121381.html