第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 Python 中交替使用類/全局變量和閉包

在 Python 中交替使用類/全局變量和閉包

阿晨1998 2023-06-20 10:30:52
我遇到了 python 中的閉包,并且我一直在圍繞這個(gè)主題進(jìn)行修補(bǔ)。如果我在這里錯(cuò)了,請(qǐng)糾正我,但我對(duì)何時(shí)使用閉包(通常)的理解是它可以用作小類 ( q1) 的替代品并避免使用全局變量 ( q2)。Q1: [replacing classes]從該類創(chuàng)建的任何實(shí)例都datafactory將擁有自己的數(shù)據(jù)列表,因此每次附加到該對(duì)象的列表都會(huì)導(dǎo)致增量行為。我了解 OO POV 的輸出。class datafactory():    def __init__(self):        self.data = []    def __call__(self, val):        self.data.append(val)        _sum = sum(self.data)        return _sumincrementwith = datafactory()print(incrementwith(1))print(incrementwith(1))print(incrementwith(2))OUTPUT: 124我嘗試用閉包替換它,它成功了,但我對(duì)為什么/如何發(fā)生這種情況的理解有點(diǎn)模糊。def data_factory():    data = []    def increment(val):        data.append(val)        _sum = sum(data)        return _sum    return incrementincrement_with = data_factory()print(increment_with(1))print(increment_with(1))print(increment_with(2))OUTPUT:124我得到的是返回嵌套函數(shù)data_factory的函數(shù)定義以及一起發(fā)送的變量,如果它是這樣的,我會(huì)理解輸出:incrementdata112但是這個(gè)data列表究竟是如何在每次調(diào)用中都持續(xù)存在的呢?函數(shù)中定義的變量不應(yīng)該在函數(shù)完成執(zhí)行后消失,并在下一次 fn 調(diào)用時(shí)重新生成和清除嗎?注意:我知道這種行為通常存在于使用默認(rèn)參數(shù)定義的函數(shù)中,例如def func(val, l = []):在每次 fn 調(diào)用時(shí)不會(huì)清除列表,而是使用新元素/附加更新,這也是我不完全理解的.我真的很感激對(duì)這兩種情況(OO 和閉包)中發(fā)生的事情進(jìn)行學(xué)術(shù)解釋。Q2: [replacing use of global]有沒有一種方法可以在不使用全局變量或返回語(yǔ)句的情況下使用閉包來(lái)增加以下變量?a = 0print("Before:", a) # Before: 0def inc(a):    a += 1print("After:", a) # After: 0感謝您的時(shí)間。
查看完整描述

目前暫無(wú)任何回答

  • 0 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)