命名空間與作用域

2022-09-19 06:27:09 字數 1516 閱讀 2374

# 1.命名空間

# 1.1 什麼是命名空間

存放變數名與變數值繫結關係的地方,可以理解為日常生活中的民政局

# 1.2 命名空間的分類

全域性命名空間:在py檔案開始執行時生成,結束時銷毀

只要可以在自己的圈子中執行結束後還能跑出來的都是全域性命名空間

name = 'jason' # name全域性

def func(): # func全域性

pass

if 1:

a = 123 # a全域性

for i in range(10):

print(i) # i全域性

while true:

a = 123 # a全域性

區域性命名空間:在函式體**開始執行時生成,結束時銷毀

函式體**執行之後產生的都是區域性命名空間

內建命名空間:在python直譯器執行時生成,結束時銷毀

python直譯器定義好的

open()

len()

# 1.3 名字的查詢順序

如果是在區域性裡

區域性》全域性》內建

如果你在全域性

全域性 >> > 內建

只能按順序找,不能倒回去再找

區域性命名空間的巢狀

'''函式在定義階段名字的查詢順序就已經固定死了(特例)'''

x = 111

def f1():

x = 222

def f2():

x = 333

def f3():

x = 444

def f4():

x = 555

print(x)

# x = 555 特例:當x在print下面就會報錯,

f4()

f3()

f2()

# 通過呼叫f1 執行所有的函式

# 命名空間的作用域

# 作用域

命名空間所能夠作用的範圍

# 內建命名空間

程式任何階段任何位置均可使用(全域性有效)

# 全域性命名空間

程式任何階段任何位置均可使用(全域性有效)。全域性命名空間內的名字在整個檔案執行期間全域性存活(除非被刪除,且在檔案的任意位置都能被使用

# 區域性命名空間

一般情況下只在各自的區域性命名空間中有效。該範圍內的名字臨時存活,只在函式體開始執行時臨時生成

函式呼叫結束後就釋放,且只能在函式中使用

命名空間與作用域

命名空間即存放名字與物件對映 繫結關係的地方。對於x 3,python會申請記憶體空間存放物件3,然後將名字x與3的繫結關係存放於命名空間中,del x表示清除該繫結關係。在程式執行期間最多會存在三種命名空間 伴隨python直譯器的啟動 關閉而產生 因而是第乙個被載入的命名空間,用來存放一些內建的...

命名空間與作用域

定義 它是儲存作用域中變數的字典。乙個命名空間中不能有重名,但是不同的命名空間可以重名而沒有任何影響。分類 按照變數定義的位置,可以劃分為以下3類 local,區域性命名空間,記錄了函式中定義的所有變數,包括函式的入參 內部定義的區域性變數。使用locals 檢視區域性命名空間。返回的是字典 glo...

命名空間與作用域

有了命名空間之後,就可以在棧區中存放相同的名字,詳細的命名空間 存放的名字 內建命名空間存放的是python直譯器自帶的名字 例如 print input 生命週期 py直譯器啟動則產生,直譯器關閉則銷毀 存放的名字 只要不是內建的和函式內定義的名字,都是全域性命名空間 生命週期 python檔案執...