python 7 2 裝飾器與語法糖

2021-08-21 06:20:51 字數 1098 閱讀 4717

一、裝飾器    

裝飾器模式(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...