一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

for循環(huán)中的局部變量引起的是什么問題

汽車電子技術(shù) ? 來源:Python腳本 ? 作者: IdlePig ? 2023-03-03 15:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Python中有一個問題:

循環(huán)變量泄漏

  • 第一種情況

構(gòu)造一個實際的環(huán)境,當連上WiFi的時候,手機才能更新app,下面的是網(wǎng)絡(luò)環(huán)境的判斷

圖片

可以看到,這里的 x 是一個在for循環(huán)的局部變量,按照正常的理解,

在for循環(huán)外面調(diào)用 x 應(yīng)該是報錯的,

但是在Python中,

for循環(huán)里面聲明的變量,在for循環(huán)結(jié)束后,會保留 x 的值。

圖片

上面的輸出的結(jié)果,第一個 x 的值當然是 WiFi,

第二個值就是遍歷完列表之后,列表最后一個值4G。

  • 第二種情況

那如果我們直接聲明一個全局變量呢,最后輸出的會是最開始的值嗎?

下面的代碼只是加了第3行,初始化了一下全局變量 x:

圖片

輸出的結(jié)果:

圖片

還是和第一種情況一樣,

充分說明了Python中,for循環(huán)中聲明的臨時變量的值會保留下來,

壞處很明顯,

一個局部變量沒有被銷毀,反而保留了下來,習慣其他語言的程序員寫起來很別扭,

一個不注意,可能還會有bug,一個后面怎么都不會想到的會出問題的地方,

避免起來很簡單,

注意好命名就行,不要隨便命名,全局變量和局部變量同名本來也不是個好習慣。

  • 語法上的規(guī)避方法

下面是Python中列表推導(dǎo)式,在Python3中被優(yōu)化過,

其實看到下圖的紅色波浪線,就大概知道,x 在這種情況下,只是一個局部變量了。

圖片

輸出結(jié)果:

圖片

顯而易見,報錯是 x 沒有定義,x 已經(jīng)被當作是局部變量了

  • 我們再試一種情況

聲明一個全局變量 x,值為WiFi,

圖片

輸出結(jié)果:

圖片

輸出都是WiFi,第4行的 x 已經(jīng)沒有影響了。

所以平時要注意Python中的一些坑,

Python易用的同時,也有難用的地方。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    614

    瀏覽量

    28886
  • for
    for
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    16061
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86458
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    labviEW局部變量的效率問題

    我編了一個程序,事件循環(huán)結(jié)構(gòu),沒有像labview風格那樣用很多移位寄存器,代之以大量局部變量。請問各位大師,用大量局部變量的做法會不會影響程序運行效率?和移位寄存器相比,兩種方法各有什么優(yōu)缺點?請從效率,可讀性,內(nèi)存空間復(fù)雜度
    發(fā)表于 04-05 15:34

    Labview慎用局部變量

    `` 對于初學(xué)Labview的人來說,局部變量這個東西有時候感覺很方便很好用,但是在這里,我的建議是如果你想寫出一段無論是維護性還是可讀性上都較好的代碼,那么就請慎用局部變量!為什么不建議大家
    發(fā)表于 02-25 11:11

    新手的一個局部變量的問題,如圖!

    2,3是1的局部變量,這時一個范例,我不明白為什么1和2要與非又給3,這樣的話當1,2,3為真時,1和2與非后為假,3就為假了,而3又是1的局部變量,1,2就變?yōu)榧倭耍?b class='flag-5'>循環(huán)不就該停止了嗎?怎么還會繼續(xù)運行呢?
    發(fā)表于 04-25 08:21

    keil局部變量分配地址問題

    使用 請問是什么問題? 我以前理解的都是keil中局部變量都作為靜態(tài)變量分配地址的 。。。 難道局部變量keil能自動優(yōu)化?
    發(fā)表于 01-20 12:25

    為什么創(chuàng)建局部變量失?。?/a>

    我都是按照教程上的兩種方法建的局部變量,但是建立局部變量后運行標志變成斷裂。我打開一個例子,例子里面有局部變量,可是當我再建同樣的局部變量的時候發(fā)生了同樣的錯誤現(xiàn)象。
    發(fā)表于 07-23 22:56

    局部變量與隊列的使用

    大家好,我有一個困擾很久的問題。我想將一個循環(huán)里的數(shù)據(jù)引用到另一個定時循環(huán)結(jié)構(gòu)里,如果用局部變量的話會出現(xiàn)數(shù)據(jù)丟失,但實時性可以保證,如果用隊列的話保證了數(shù)據(jù)的完整性,但實時性做不到一致,會出現(xiàn)滯后,怎樣能讓數(shù)據(jù)和實時性都達到要
    發(fā)表于 05-22 14:31

    static作用(修飾函數(shù)、局部變量、全局變量

    詳細介紹了static作用(修飾函數(shù)、局部變量、全局變量)的用法
    發(fā)表于 11-17 10:30 ?4次下載

    全局變量局部變量有什么區(qū)別

    全局變量是編程術(shù)語中的一種,源自于變量之分。變量分為局部與全局,局部變量又可稱之為內(nèi)部變量
    發(fā)表于 12-11 11:58 ?3.3w次閱讀
    全局<b class='flag-5'>變量</b>和<b class='flag-5'>局部變量</b>有什么區(qū)別

    單片機靜態(tài)局部變量的使用方法

    1.靜態(tài)局部變量的值在函數(shù)調(diào)用結(jié)束后不消失而保留原值,即其占用的存儲單元不釋放,在下一次該函數(shù)調(diào)用時,該變量已有值,就是上一次函數(shù)調(diào)用結(jié)束時的值; 2.靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲
    發(fā)表于 03-14 14:28 ?3358次閱讀
    單片機靜態(tài)<b class='flag-5'>局部變量</b>的使用方法

    關(guān)于 函數(shù)體內(nèi)局部變量定義的位置

    關(guān)于函數(shù)體內(nèi)局部變量定義的位置
    的頭像 發(fā)表于 03-14 11:43 ?3127次閱讀
    關(guān)于 函數(shù)體內(nèi)<b class='flag-5'>局部變量</b>定義的位置

    西門子PLC的公共變量局部變量

    局部變量L:PLC內(nèi)部局部變量用英文字母L標記,其作用與公共變量類似,但它是一種共用的、動態(tài)變化的存儲區(qū)域,其內(nèi)容與含義隨著所執(zhí)行的邏輯塊的不同而改變,它用于寄存僅在邏輯塊內(nèi)部使用的中間運算結(jié)果。
    發(fā)表于 03-24 13:41 ?5687次閱讀

    詳解LABVIEW中的局部變量和全局變量

    本文檔的主要內(nèi)容詳細介紹的是LABVIEW初級教程之局部變量與全局變量的詳細資料說明。
    發(fā)表于 03-29 15:00 ?26次下載

    西門子PLC的局部變量使用技巧

    臨時變量是臨時存儲在本地數(shù)據(jù)區(qū)的變量。只有在執(zhí)行POU時,才使用定義的臨時變量,而在執(zhí)行POU后,不再使用臨時變量的值。在主程序或中斷程序中,局部變
    發(fā)表于 12-13 18:07 ?5865次閱讀

    Python-局部變量與全局變量

    局部變量是在函數(shù)內(nèi)部定義的變量,只能在函數(shù)內(nèi)部使用,函數(shù)執(zhí)行結(jié)束后,函數(shù)內(nèi)部的局部變量會被系統(tǒng)回收,不同的函數(shù),可以定義相同名稱的局部變量,相互之間沒有任何關(guān)聯(lián)
    的頭像 發(fā)表于 02-16 15:16 ?1123次閱讀
    Python-<b class='flag-5'>局部變量</b>與全局<b class='flag-5'>變量</b>

    for循環(huán)里的變量局部變量

    對于一個普通for循環(huán)而言,循環(huán)變量局部變量。在大多數(shù)編程語言中,循環(huán)變量只在
    的頭像 發(fā)表于 11-23 14:50 ?3583次閱讀