迭代器
迭代是訪問(wèn)集合元素的一種方式。迭代器是一個(gè)可以記住遍歷的位置的對(duì)象核无。迭代器對(duì)象從集合的第一個(gè)元素開(kāi)始訪問(wèn)艺骂,直到所有的元素被訪問(wèn)完結(jié)束。迭代器只能往前不會(huì)后退伍纫。
可迭代對(duì)象
迭代器提供了一個(gè)統(tǒng)一的訪問(wèn)集合的接口宗雇。只要是實(shí)現(xiàn)了iter()或getitem()方法的對(duì)象,就可以使用迭代器進(jìn)行訪問(wèn)莹规。
序列:字符串赔蒲、列表、元組
非序列:字典良漱、文件
自定義類:用戶自定義的類實(shí)現(xiàn)了iter()或getitem()方法的對(duì)象
創(chuàng)建迭代器對(duì)象
使用內(nèi)建的工廠函數(shù)iter(iterable)可以獲取迭代器對(duì)象:
語(yǔ)法:
iter(collection) -> iterator
iter(callable,sentinel) -> iterator
1 使用內(nèi)置工廠函數(shù)生成迭代器
2 >>> L1 = [1,2,3,4,5,6]
3 >>> I2 = iter(L1)
4 >>> print I2
5 <listiterator object at 0x7fe4fd0ef610>
6 >>> I2.next()
7 1
8 >>> I2.next()
9 2
10 >>> I2.next()
11 3
閉包
閉包是函數(shù)式編程的一個(gè)重要的語(yǔ)法結(jié)構(gòu)舞虱,函數(shù)式編程是一種編程范式 (而面向過(guò)程編程和面向?qū)ο缶幊桃捕际蔷幊谭妒?。在面向過(guò)程編程中债热,我們見(jiàn)到過(guò)函數(shù)(function)砾嫉;在面向?qū)ο缶幊讨杏卓粒覀円?jiàn)過(guò)對(duì)象(object)窒篱。函數(shù)和對(duì)象的根本目的是以某種邏輯方式組織代碼,并提高代碼的可重復(fù)使用性(reusability)。閉包也是一種組織代碼的結(jié)構(gòu)墙杯,它同樣提高了代碼的可重復(fù)使用性配并。
不同編程語(yǔ)言實(shí)現(xiàn)閉包的方式是不同的,python中閉包從表現(xiàn)形式上看高镐,如果在一個(gè)內(nèi)部函數(shù)里溉旋,對(duì)在外部作用域(但不是在全局作用域)的變量進(jìn)行引用,那么內(nèi)部函數(shù)就被認(rèn)為是閉包(closure)嫉髓。
舉個(gè)例子:
def outer(x):
def inner(y):
return x + y
return inner