為什麼函數呼叫不更新全域變數?
Oct 19, 2024 pm 12:00 PM函數呼叫不會更新全域變數
這個問題探討了一個程式設計挑戰,其中最初分配為False 的全域變數是'在函數內引用時,t 會被更新。儘管函數改變了全域變數的值,但主程式的循環繼續執行,導致無限循環。要理解這個問題需要深入研究命名空間和變數作用域的概念。
命名空間和變數作用域
在程式設計中,每個函數和模組都會建立自己的命名空間。命名空間是該範圍內已知且可存取的名稱(變數、函數等)的集合。當在函數內為變數賦值時,即使存在同名的全域變量,也會在函數的命名空間中建立一個新變數。
使用全域變數
在這種情況下,當函數內引用名為「done」的全域變數時,會在函數的命名空間中建立一個具有相同名稱的新局部變數。這種局部「完成」與全局「完成」不同。更改本地“done”對全域變數沒有影響。
解
要克服這個問題,必須使用 global 關鍵字來明確引用全域變數的功能。透過使用全域done,函數告訴解釋器存取全域「done」變量,而不是建立一個新的本地變數。
修改代碼
修復問題,該函數可以修改如下:
<code class="python">def function(): global done for loop: code if not comply: done = True</code>
登入後複製
說明
使用全域done在函數內使用的變數和全域變數之間建立了聯繫。當函數修改done的值時,它會更新最初引用的相同全域變數。這確保了當函數將 did 設為 True 時,主程式的 while 迴圈將按預期終止。
以上是為什麼函數呼叫不更新全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)