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