国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

淺談Python中的閉包

2019-11-25 17:13:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Python中的閉包的概念, 在我看來(lái), 就相當(dāng)于在某個(gè)函數(shù)中又定義了一個(gè)或多個(gè)函數(shù), 內(nèi)層函數(shù)定義了具體的實(shí)現(xiàn)方式, 而外層返回的就是這個(gè)實(shí)現(xiàn)方式, 但并沒(méi)有執(zhí)行, 除非外層函數(shù)調(diào)用的內(nèi)層的實(shí)現(xiàn)方法被執(zhí)行了。至于這個(gè)怎么執(zhí)行, 看下面的例子就知道了

比如:

def sum_outer(x, y):  def sum_in(z):    return x + y - z;  return sum_in #注意, 這里返回的不是sum_in() 只是sum_in的函數(shù)名 m = sum_outer(3, 4) #3, 4 分別對(duì)應(yīng)x, y,這里的m返回的也只是函數(shù)sum_in的定義,<function __main__.sum_in> print m(5) # m對(duì)應(yīng)z, 這個(gè)時(shí)候才是真正sum_in執(zhí)行的時(shí)候

看起來(lái)就像通過(guò)sum_outer 調(diào)用了內(nèi)層的sum_in函數(shù), 多了層代理

其中一種應(yīng)用場(chǎng)景就是可以根據(jù)不同的參數(shù),使用相同的實(shí)現(xiàn)去返回對(duì)應(yīng)不同的結(jié)果,比如, 根據(jù)不同的配置獲取不同的數(shù)據(jù)庫(kù)連接, 或者要求在驗(yàn)證字符串長(zhǎng)度時(shí), 可以根據(jù)不同的最大長(zhǎng)度驗(yàn)證(外層傳遞最大長(zhǎng)度, 內(nèi)層傳遞驗(yàn)證的字符串)。

在抽象化一點(diǎn), 外層定義了一個(gè)環(huán)境, 內(nèi)層則是在該環(huán)境中的要做的事情, 但這個(gè)事情還沒(méi)做,
只是要做。當(dāng)真正需要做的時(shí)候到這個(gè)環(huán)境中去做了就好了(外層的返回結(jié)果(m)執(zhí)行內(nèi)層的函數(shù)sum_in)
實(shí)際上, 直接給函數(shù)傳遞需要的所有參數(shù), 直接返回結(jié)果, 如上面的sum_outer和sum_in, 直接通過(guò)

def sum(x,y,z):  return x + y - z

不就結(jié)了嗎,為社么還要閉包這個(gè)實(shí)現(xiàn)呢? 到目前來(lái)說(shuō), 只能看出他們是兩種不同的實(shí)現(xiàn)方式, 更多的區(qū)別, 還有待日后的學(xué)習(xí)體驗(yàn)

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 万山特区| 揭阳市| 信丰县| 台南市| 武定县| 朝阳县| 凤庆县| 夏津县| 措美县| 江城| 红安县| 确山县| 咸丰县| 大埔县| 淅川县| 全南县| 舟山市| 准格尔旗| 子洲县| 鄱阳县| 兴义市| 全椒县| 临洮县| 石楼县| 衡南县| 莱芜市| 区。| 寻甸| 师宗县| 墨竹工卡县| 尖扎县| 丰宁| 景东| 眉山市| 逊克县| 江都市| 珠海市| 元氏县| 上杭县| 台山市| 汝阳县|