閉包 全域性變數與區域性變數

2022-06-09 02:33:10 字數 785 閱讀 5298

報錯:unboundlocalerror: local variable 't' referenced before assignment

在 python 中,如果乙個函式使用了和全域性變數相同的名字且改變了該變數的值,那麼該變數就會變成區域性變數,

那麼就會造成在函式中我們沒有進行定義就引用了,所以會報該錯誤。

引用全域性變數,並在函式中對它進行修改:

我們在開發中能盡量避免使用全域性變數的就盡量避免使用。

因為不同模組,不同函式都可以自由的訪問全域性變數,可能會造成全域性變數的不可預知性。

比如程式設計師甲修改了全域性變數 t 的值,

然後程式設計師乙同時也對 time 進行了修改,如果其中有錯誤,這種錯誤是很難發現和更正的。

這時候使用閉包:

這裡最直接的表現就是全域性變數 t 至此至終都沒有修改過,

這裡還是用了 nonlocal 關鍵字,表示在函式或其他作用域中使用外層(非全域性)變數。

這種內部函式的區域性作用域中可以訪問外部函式區域性作用域中變數的行為,我們稱為:閉包。

更加直接的表達方式就是,當某個函式被當成物件返回時,夾帶了外部變數,就形成了乙個閉包。

js 區域性變數 全域性變數 閉包

什麼是變數?變數的命名規範 1 變數名必須以字母.下標符號 或者 開頭 2 變數名的長度不得超過255個字元 3 變數名中不可以使用空格,並且開頭不得以數字開頭 4 不用使用指令碼語言中保留的關鍵字及保留符號作為變數名 5 變數名是區分大小寫的,var a 1和var a 1 指在程式中只在特定過程...

區域性變數與全域性變數

根據c語言的說法,區域性變數 定義在方法內部的變數叫區域性變數 全域性變數 定義在方法外部的變數叫全域性變數。區域性變數和全域性變數的主要區別在於二者的生存週期不同。全域性變數的生存週期 靜態分配記憶體,程式執行期間常駐記憶體,直到程式執行結束。區域性變數的生存週期 動態分配記憶體,位於執行緒堆疊中...

全域性變數與區域性變數

區域性變數 在區域性 塊內定義 作用域在區域性 塊內,生命週期在區域性 塊內,結束時銷毀。include void test int main return 0 輸出 1111111111 全域性變數 在所有 塊外定義 作用域是整個工程,生命週期程式開始至結束。工程test 10 10 原始檔sum...