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

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

僅在循環(huán)函數(shù)內(nèi)創(chuàng)建變量一次

僅在循環(huán)函數(shù)內(nèi)創(chuàng)建變量一次

縹緲止盈 2023-12-09 16:52:53
我有一個(gè)經(jīng)常循環(huán)的函數(shù)。在其中我想創(chuàng)建一個(gè)變量,然后該變量會(huì)不斷增加。我的問題是,當(dāng)我在函數(shù)內(nèi)定義它時(shí),它會(huì)被新的迭代覆蓋,從而使其使用無效。所以我只想定義它一次,無論它循環(huán)多少次。但也許還有另一種解決方案。我的代碼和我的意思是aniTimer:def animate(self, sprite_array, animation_length_in_s, pos):    aniTimer = ?    #How do I define it only once?    ani_len     = animation_length_in_s    sprite_len  = len(sprite_array) -1    if time.time() >= aniTimer + ani_len:        self.aniCount += 1        aniTimer = time.time()        if self.aniCount > sprite_len:            self.aniCount = 0我試過這個(gè):def animate(self, sprite_array, animation_length_in_s, pos):    try:        aniTimer    except NameError:        aniTime = time.time()    ani_len     = animation_length_in_s    sprite_len  = len(sprite_array) -1    if time.time() >= aniTimer + ani_len:        self.aniCount += 1        aniTimer = time.time()        if self.aniCount > sprite_len:            self.aniCount = 0我嘗試了這個(gè):def animate(self, sprite_array, animation_length_in_s, pos):        if "aniTimer" not in locals():         aniTime = time.time()    ani_len     = animation_length_in_s    sprite_len  = len(sprite_array) -1    if time.time() >= aniTimer + ani_len:        self.aniCount += 1        aniTimer = time.time()        if self.aniCount > sprite_len:            self.aniCount = 0但兩種嘗試總是會(huì)執(zhí)行。這也讓我思考為什么會(huì)發(fā)生這種情況。應(yīng)該NameError只出現(xiàn)一次,并且在定義變量之后,它應(yīng)該位于locals().另外,全局定義變量會(huì)導(dǎo)致局部變量在定義之前就被引用的錯(cuò)誤。并將其定義為函數(shù)實(shí)用程序中的全局變量。磁力RE這是一個(gè)MRE,具有幾乎相同的問題,但具有 variabel timer。該函數(shù)將被許多對(duì)象調(diào)用,因此計(jì)時(shí)器需要為調(diào)用它的每個(gè)對(duì)象都有一個(gè)單獨(dú)的值。timer = 0breaks = 3looping = Truedef test():        while looping:        timer += 1        print(timer)        if timer >= breaks:            print("Print this")            breaktest()
查看完整描述

3 回答

?
胡說叔叔

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

嘗試將類變量初始化為None. 這是 Python 中的標(biāo)準(zhǔn)習(xí)語,在許多其他語言中也有直接同源詞。


導(dǎo)入時(shí)間


class Foo():


    aniTime = None


    def animate(self):

        if Foo.aniTime is None:

            Foo.aniTime = time.time()


food = Foo()

food.animate()

print(food.aniTime)

time.sleep(2)

 

fool = Foo()

fool.animate()

print(fool.aniTime)

輸出:


1603149209.5965674

1603149209.5965674

第二次調(diào)用不會(huì)改變?cè)瓉肀4娴臅r(shí)間。


查看完整回答
反對(duì) 回復(fù) 2023-12-09
?
ITMISS

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

嘗試在任何函數(shù)外部定義變量,將其調(diào)用到函數(shù)中,然后在每次使用后從函數(shù)中返回它。


var = 1


def example(var):

    #insert program code

    var += 1

    return var


var = example(var)

這將使每次“example”函數(shù)運(yùn)行時(shí),“var”都會(huì)被傳遞到其中,然后帶回并加一。程序運(yùn)行時(shí)每次使用此函數(shù),變量“var”都會(huì)加一。


在這種情況下,您可以將我用作示例的“var”變量替換為“aniTime”變量,并且您只需在函數(shù)之前定義它一次,并且每次調(diào)用該函數(shù)時(shí)它都不會(huì)被初始值覆蓋。


查看完整回答
反對(duì) 回復(fù) 2023-12-09
?
慕仙森

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

如果你想使用全局變量,你可以global aniTime在函數(shù)的頂部使用它來在你的函數(shù)中使用它

最佳實(shí)踐可能是將變量保存在調(diào)用函數(shù)的循環(huán)之外,并且可以將其作為參數(shù)傳遞給函數(shù)


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

添加回答

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