python之命名空間和作用域

2021-10-24 10:14:26 字數 775 閱讀 2296

命名空間是名稱到物件的對映,一般有三種:

命名空間的查詢順序

x=100 # 全域性名稱

def foo():

x=200 # 區域性名稱

print(x)

foo() # 200

print(x) # 100

作用域就是乙個 python 程式可以直接訪問命名空間的正文區域。

x=1 # 全域性

def outer():

x=2 # 區域性

def inner():

x=3 # 函式巢狀

print(x)

inner()

print(x)

outer() # 3,2

print(x) # 1

golbal和nonlocal關鍵字

x=1

def foo():

global x # 宣告x為全域性

x=2foo()

print(x) # 2

list=[1,2,3]

def too(num):

too(list)

print(list) #[1,2,3,5]

def a():

x=1def b():

nonlocal x 宣告區域性

x=2b()

print(x)

a() # 2

Python命名空間和作用域

乙個命名空間中不能有重名,但不同的命名空間是可以重名而沒有任何影響。命名空間的生命週期取決於物件的作用域,如果物件執行完成,則該命名空間的生命週期就結束。因此,我們無法從外部命名空間訪問內部命名空間的物件。內建作用域是通過乙個名為 builtin 的標準模組來實現的,預定義了哪些變數 python ...

python命名空間和作用域

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

Python命名空間和作用域

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