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

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

從 Python 中的循環(huán)創(chuàng)建不同的函數(shù)

從 Python 中的循環(huán)創(chuàng)建不同的函數(shù)

函數(shù)式編程 2023-05-09 16:00:09
我正在嘗試構(gòu)建一個(gè) tkinter GUI,但我遇到了 Python 編程邏輯問題。我的問題如下:我正在通過以下方式創(chuàng)建一堆對(duì)象:class Aplication:    def createObjects(self):        objects = []        for i in range(10):            obj = Object(command = lambda: self.myFunction(i))            objects.append(obj)    def myFunction(self, i):        print(i)在執(zhí)行每個(gè)對(duì)象的命令時(shí),我期望的結(jié)果是:0123456789但相反,我得到:9999999999我簡(jiǎn)化了我的代碼,這樣任何了解 Python 邏輯的人都可以幫助我。提前感謝任何幫助。
查看完整描述

1 回答

?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊

這個(gè)稍作修改的版本可以如您所愿地工作。


它本質(zhì)上是變量范圍問題。i在您的實(shí)現(xiàn)中,該函數(shù)在運(yùn)行時(shí)查找,何時(shí)i已更新為 9。如果要保留 的“當(dāng)前”值i,則需要定義一個(gè)具有當(dāng)前值的函數(shù),i如下所示。


class Object:

    def __init__(self, command):

        self.command = command

        

class Application:

    def createObjects(self):

        objects = []

        for i in range(10):

            obj = Object(command = self.myFunction(i))

            objects.append(obj)

        return objects

    

    def myFunction(self, i):

        return lambda: print(i)


a = Application()

os = a.createObjects()

for o in os:

    o.command()



查看完整回答
反對(duì) 回復(fù) 2023-05-09
  • 1 回答
  • 0 關(guān)注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報(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)