python命名空間

2022-07-31 02:57:13 字數 1388 閱讀 9703

目錄在python直譯器開始執行之後, 就會在記憶體中開闢乙個空間, 每當遇到乙個變量的時候, 就把變量名和值之間的關係記錄下來, 但是當遇到函式定義的時候, 直譯器只是把函式名讀入記憶體, 表示這個函式存在了, 至於函式內部的變量和邏輯, 直譯器是不關心的. 也就是說一開始的時候函式只是載入進來, 僅此而已, 只有當函式被呼叫和訪問的時候, 直譯器才會根據函式內部宣告的變量來進行開闢變量的內部空間. 隨著函式執行完畢, 這些函式內部變量占用的空間也會隨著函式執行完畢而被清空.

def fun():   

a = 10

print(a)

fun()

print(a) # a不存在了已經..

我們給存放名字和值的關係的空間起乙個名字叫: 命名空間. 我們的變量在儲存的時候就 是儲存在這片空間中的.

命名空間分類:

全域性命名空間--> 我們直接在py檔案中, 函式外宣告的變量都屬於全域性命名空間

區域性命名空間--> 在函式中宣告的變量會放在區域性命名空間

內建命名空間--> 存放python直譯器為我們提供的名字, list, tuple, str, int這些都是內建命名空間  

載入順序:

內建命名空間

全域性命名空間

區域性命名空間(函式被執行的時候)

取值順序:

區域性命名空間

全域性命名空間

內建命名空間

a = 10

def func():

a = 20

print(a)

func() # 20

作用域: 作用域就是作用範圍, 按照生效範圍來看分為 全域性作用域 和 區域性作用域

全域性作用域: 包含內建命名空間和全域性命名空間. 在整個檔案的任何位置都可以使用(遵循 從上到下逐⾏執行).

區域性作用域: 在函式內部可以使用.

作⽤域命名空間:

全域性作用域: 全域性命名空間 + 內建命名空間

區域性作用域: 區域性命名空間

我們可以通過globals()函式來檢視全域性作⽤用域中的內容,也可以通過locals()來檢視區域性作 ⽤用域中的變數量和函式資訊

a = 10

def func():

a = 40

b = 20

print("哈哈")

print(a, b)

print(globals()) # 列印全域性作用域中的內容

print(locals()) # 列印當前作用域中的內容

func()

Python 命名空間

本文介紹python中命名空間中的legb原則。legb含 釋 l local function 函式內的名字空間,包括區域性變數和形參 e enclosing function locals 外部巢狀函式的名字空間 例如closure g global module 函式定義所在模組 檔案 的名字...

python 命名空間

作用域 第五章說過,將輸入字元作為命令放在作用域字典裡 作用域,每個函式都有乙個作用域,就是 字典,字典名字為函式名,鍵為變數,鍵值為變數對應的賦值。函式的作用域為區域性作用域 在函式內部訪問全域性變數,且只是讀取變數的值不重新繫結變數。這樣引用易出錯誤。慎重使用全域性變數 defcombine p...

python命名空間

區域性命名空間下def foo a a if name main foo 報錯資訊 unboundlocalerror local variable a referenced before assignment 全域性命名空間下if name main b b報錯資訊 nameerror name ...