Python命名空間和作用域

2021-10-07 02:57:02 字數 840 閱讀 5044

乙個命名空間中不能有重名,但不同的命名空間是可以重名而沒有任何影響。

命名空間的生命週期取決於物件的作用域,如果物件執行完成,則該命名空間的生命週期就結束。

因此,我們無法從外部命名空間訪問內部命名空間的物件。

內建作用域是通過乙個名為 builtin 的標準模組來實現的,預定義了哪些變數:;

python 中只有模組(module),類(class)以及函式(def、lambda)才會引入新的作用域,其它的**塊(如 if/elif/else/、try/except、for/while等)是不會引入新的作用域的,也就是說這些語句內定義的變數,外部也可以訪問。

定義在函式內部的變數擁有乙個區域性作用域,定義在函式外的擁有全域性作用域。

區域性變數只能在其被宣告的函式內部訪問,而全域性變數可以在整個程式範圍內訪問。呼叫函式時,所有在函式內宣告的變數名稱都將被加入到作用域中。

當內部作用域想修改外部作用域的變數時,就要用到global和nonlocal關鍵字了。

要修改巢狀作用域(enclosing 作用域,外層非全域性作用域)中的變數則需要 nonlocal 關鍵字了。

注意:

python命名空間和作用域

namespace 命名空間 命名空間 內建 命名空間 python直譯器啟動之後就可以使用的變數 函式名 全域性 命名空間 在函式外面的變數名 函式名 區域性 命名空間 每乙個函式都擁有自己的命名空間 python直譯器執行 載入順序 所有 內建空間函式名 變數 逐行 載入全域性空間變數 函式名 ...

Python命名空間和作用域

準備知識 1.在python直譯器開始執行之後,機會在記憶體中開闢乙個空間,每當遇到 乙個變數的時候,就把變數和值之間的關係記錄下來,但是當遇到函式定義 的時候,直譯器只是把函式名讀入記憶體,表示這個函式存在,至於函式內部 的變數和邏輯,直譯器是不關心的。也就是說一開始的時候函式只是載入進 來,僅此...

Python命名空間和作用域

一 命名空間namespacs 存放名字的地方,是對棧區的劃分 有了命名空間之後,就可以在棧區中存放相同的名字,詳細的,命名空間 分為三種 1.1 內建命名空間 存放的名字 存放的python直譯器內建的名字 print input 存活週期 python直譯器啟動則產生,python直譯器關閉則銷...