一、裝飾器
裝飾器模式(decorator pattern)允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。
這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。
語法糖:
帶返回值的裝飾器
帶引數的裝飾器
語法糖中加引數
#底鍋,羊肉(50)
#麻講,豆皮(10)
#麻講,香菜(5)
def doupi(f):
def caidan1(*arg,**dict):
print("豆皮麻資10塊")
return 10+f(*arg,**dict)
return caidan1
def xiangcai(f):
def caidan2(a):
print("香菜麻資5塊")
return 5+f(a)
return caidan2
@doupi
def diguo(*arg,**dict):
print("底鍋50")
return 50
x=diguo(10)
print(x)
import types
def jingpin(nn):
print("精品肥牛:¥38")
if type(nn)==types.functiontype:
return nn()+38
else:
return nn+38
def shucai(n):
print("蔬菜雙拼:¥20")
if type(n)==types.functiontype:
return n()+20
else:
return n+20
@jingpin #jingpin(shucai(guodi))
@shucai
def guodi():
print("鍋底:¥20")
return 20
result=guodi()
print(result)
Python語法糖 裝飾器
這裡用來記錄python各種甜得發膩的語法糖,以及各種變形用法。太初,神諭 pythonic import light,於是有了光。裝飾器是用來給函式增加新功能的,對於支援高階函式的語言,函式引數直接穿進去就好了。但是python提供了更為優雅的解決方案,只需要乙個 就能搞定。裝飾器函式需要單獨寫出...
Python語法糖 裝飾器
這裡用來記錄python各種甜得發膩的語法糖,以及各種變形用法。太初,神諭 pythonic import light,於是有了光。裝飾器是用來給函式增加新功能的,對於支援高階函式的語言,函式引數直接穿進去就好了。但是python提供了更為優雅的解決方案,只需要乙個 就能搞定。裝飾器函式需要單獨寫出...
Python裝飾器語法糖
裝飾器的固定格式 普通版本 def timer func def inner args,kwargs 執行函式之前要做的 ret func args,kwargs 執行函式之後要做的 return ret return inner wraps版本 from functools import wrap...