迭代器
1.1、判斷可迭代對(duì)象
1.2贮预、自定義迭代器
自定義迭代器對(duì)象: 在類里面提供iter和next方法創(chuàng)建的對(duì)象就是迭代器贝室。
2、生成器
2.1 生成器創(chuàng)建方式1
把列表推導(dǎo)式的中括號(hào)改成小括號(hào)創(chuàng)建的對(duì)象就是生成器仿吞。生成器:生成器是一個(gè)特殊的迭代器滑频,也就是說(shuō)可以使用next和for循環(huán)取值。
2.2 生成器創(chuàng)建方式2
在def里面看到y(tǒng)ield關(guān)鍵字表示就是一個(gè)生成器唤冈。
3峡迷、裝飾器
3.1閉包
1、在一個(gè)函數(shù)里邊定義了一個(gè)函數(shù)
2你虹、內(nèi)函數(shù)可能會(huì)用到外函數(shù)的數(shù)據(jù)
3绘搞、外函數(shù)一定有返回值,而且是內(nèi)函數(shù)的引用
# 外函數(shù)outer()
def outer():
# 外函數(shù)局部變量傅物,對(duì)于內(nèi)函數(shù)來(lái)說(shuō)相當(dāng)于全局變量
number = 10
# 內(nèi)函數(shù)
def inner():
# 外函數(shù)數(shù)據(jù)的引用
nonlocal number
number += 1
# 返回值是內(nèi)函數(shù)inner的引用
return inner
# 調(diào)用outer函數(shù)夯辖,用func接收inner函數(shù)的引用
func = outer()
# 調(diào)用inner函數(shù)
func()
1、裝飾器定義:
閉包的延伸挟伙,外函數(shù)傳入函數(shù)的引用楼雹,而且內(nèi)函數(shù)返回函數(shù)的調(diào)用就是裝飾器
2、作用:
在不修改函數(shù)體的前提下尖阔,在函數(shù)前面添加功能比如驗(yàn)證等
3贮缅、原理:
直接調(diào)用內(nèi)函數(shù),先執(zhí)行內(nèi)函數(shù)函數(shù)體介却,即驗(yàn)證的部分谴供,在內(nèi)函數(shù)的返回值的地方返回傳入函數(shù)的調(diào)用,即不被修改的函數(shù)體齿坷。
def outer(func):
def inner():
return func()
return inner
# 裝飾器的使用 @ :相當(dāng)于 func = outer(func)
# 即把func的引用替換成outer的返回值桂肌,也就是內(nèi)函數(shù)的引用
# 然后在內(nèi)函數(shù)中返回原本func的引用的調(diào)用数焊,即func的函數(shù)體
@outer
def func():
pass