1.裝飾器的作用
裝飾器的強大在于它能夠在不修改原有業(yè)務(wù)邏輯的情況下對代碼進行擴展髓考,權(quán)限校驗部念、用戶認證、日志記錄氨菇、性能測試儡炼、事務(wù)處理、緩存等都是裝飾器的絕佳應用場景查蓉,它能夠最大程度地對代碼進行復用乌询。
對于python來說裝飾器就是能夠在不修改原始的代碼情況下給其添加新的功能,比如一款軟件上線之后豌研,我們需要在不修改源代碼和不修改被調(diào)用的方式的情況下還能為期添加新的功能楣责,在python種就可以用裝飾器來實現(xiàn),同樣在寫代碼的時候也要考慮到后面的可擴展性聂沙。
一個簡單裝飾器的實現(xiàn):
def outer(func):
'''可以理解成閉包函數(shù)秆麸,外函數(shù)的返回值為內(nèi)嵌函數(shù)本身'''
def inner():
print("記錄日志開始")
func() # 業(yè)務(wù)函數(shù)
print("記錄日志結(jié)束")
return inner
foo = outer(foo)
foo()
################################
@outer
def foo():
'''其實將foo()函數(shù)對象當做參數(shù)傳遞給了outer()'''
print("foo")
foo()
2.迭代器:是訪問集合元素的一種方式,從集合的第一個元素開始訪問及汉,直到所有元素被訪問結(jié)束沮趣。其優(yōu)點是不需要事先準備好整個迭代過程中的所有元素,僅在迭代到某個元素時才開始計算該元素坷随。適合遍歷比較巨大的集合房铭。iter():方法返回迭代器本身驻龟, next():方法用于返回容器中下一個元素或數(shù)據(jù)。
生成器:帶有yield的函數(shù)不再是一個普通函數(shù)缸匪,而是一個生成器翁狐。當函數(shù)被調(diào)用時,返回一個生成器對象凌蔬。不像一般函數(shù)在生成值后退出露懒,生成器函數(shù)在生成值后會自動掛起并暫停他們的執(zhí)行狀態(tài)。
'''迭代器'''
alist=[1,2,3,4,5,6]
#for i in iter(alist):
# print(i)
a=iter(alist)
while True:
try:
x=next(a)
print(x)
except StopIteration:
break
'''生成器'''
def myyield(n):
while n>0:
print("開始生成...:")
yield n
print("完成一次...:")
n -= 1
for i in myyield(4):
print("遍歷得到的值:",i)
reference:
https://blog.csdn.net/lantian_123/article/details/78094145
https://zhuanlan.zhihu.com/p/25177227
關(guān)于裝飾器砂心、迭代器懈词、生成器
https://blog.csdn.net/wang_yuewen/article/details/78847807