11.30
疊加多個(gè)裝飾器
1.加載順序:自下而上
2.執(zhí)行順序:自上而下
格式為:
def outer1(func):
def inner(*args,**kwargs):
res=func(*args,**kwargs)
return res
return inner
def outer2(func):
def inner1(*args,**kwargs):
res=func(*args,**kwargs)
return res
return inner1
@outer1
@outer2
def sa():
print("x")
sa()
裝飾器裝飾的對象一般為函數(shù),為裝飾器添加功能毫無意義,因此裝飾器加載順序是自下而上,由原函數(shù)傳參至底部裝飾器并返回一個(gè)新的函數(shù)體代碼塊,再與其上的裝飾器結(jié)合
執(zhí)行順序至上而下
有參裝飾器
當(dāng)需要給裝飾器傳參時(shí),只有兩層結(jié)構(gòu)的裝飾器無法滿足情況,因此需要疊加一層,可以接受傳遞的參數(shù)
三元表達(dá)式
格式為 x if 條件表達(dá)式 else y
生成式
列表生成式
字典生成式
分別將可迭代對象作為參數(shù),并迭代取值,返回相應(yīng)的格式
匿名函數(shù)
匿名函數(shù)就是只定義了一個(gè)函數(shù)的內(nèi)存地址,主要用于臨時(shí)使用一次的場景
Python使用lambda來創(chuàng)建匿名函數(shù)
lambda只是一個(gè)表達(dá)式,lambda主體是一個(gè)表達(dá)式而不是代碼塊,僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去
在Python中,使用yield的函數(shù)被稱為生成器(generator)
跟普通函數(shù)不同的是,生成器是一個(gè)返回迭代器的函數(shù),只能用于迭代操作
在調(diào)用生成器運(yùn)行的過程中,每次運(yùn)行yield時(shí),函數(shù)會暫停并保存當(dāng)前所有的運(yùn)行信息返回yield的值
并在下一次執(zhí)行next()方法時(shí)從當(dāng)前位置繼續(xù)運(yùn)行
調(diào)用一個(gè)生成器函數(shù)返回的是一個(gè)迭代器對象
轉(zhuǎn)載于:https://www.cnblogs.com/suncunxu/p/10046334.html
總結(jié)
- 上一篇: 多目标决策---基本概念
- 下一篇: 快速的利用 Express 框架实现一个