nonlocal與global

在這裏插入圖片描述

在這裏插入圖片描述

nonlocal語句中聲明的嵌套的作用域,使得嵌套的函數能賦值,並且可以改變嵌套函數的名稱。
nonlocal列出的名稱必須在嵌套的def中提前定義過,否則會報錯。
nonlocal作用域查找只限定在嵌套的def中,global的作用域從嵌套的模塊作用域開始,若不存在則繼續到內置作用域中查找。對全局名稱的賦值總是在模塊作用域中創建或修改他們。

nonlocal的好處:
允許在內存中保持可變狀態的多個副本,可變狀態信息名稱不會與程序其他部分產生衝突。而global只考慮到模塊作用域中狀態信息的單個共享副本。具體說明見下圖:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章