命名空間和作用域

2022-09-12 21:39:31 字數 961 閱讀 6633

內建命名空間

#python直譯器一啟動就能認識

#內建名字再啟動直譯器時候就載入進去了

例如:input(),print(),len(),,,,,

全域性命名空間

#是在程式從上到下載入的過程中以此載入到記憶體的

#放置了我們所有的函式名和變數名

區域性命名空間

#函式內部定義的名字

#當函式被呼叫的時候,才會產生這個命名空間,隨著這個函式的結束,又消失了

在區域性:可以使用內內建和全域性命名空間

在全域性:可以使用區域性命名空間的名字,但是不能用區域性中使用

在內建:在內建是不能使用區域性和全域性的名字的,因為直譯器的啟動並不依賴與區域性和全域性命名空間

如果自己有的話,就不找上一級要,如果沒有的話就找上一級要,上一級如果沒有的話就會報錯

def input():

print("小王要變強")

def print():

print(input())#函式名帶括號,指的是函式的呼叫

print(input)#如果不帶括號的話,輸出的是input的記憶體位址

作用域1.全域性作用域-->作用在全域性-->內建和名字空間都屬於全域性作用域

2.區域性作用域-->作用在區域性-->函式(區域性空間裡面的名字屬於區域性作用域)

#如果在區域性宣告了乙個區域性變數,那麼就可以在全域性裡面使用

#全域性使用了乙個變數,在區域性不能使用

a=1def func(a):

a=a+1

return a

a=fun(a)#用這種方法增加了隱蔽性,一般在公司上班,避免使用global,就使用這種傳參的方式

命名空間和作用域

1 命名空間查詢順序 假設我們要使用變數 runoob,則 python 的查詢順序為 直譯器會從命名空間中查詢runoob,它先從區域性空間查詢,如果找到了它就會使用區域性命名空間的變數runoob,即使全域性命名空間也有變數runoob。這就很容易理解為什麼在函式內部宣告的區域性變數會覆蓋掉在模...

命名空間和作用域

命名空間是對棧區的劃分,存放名字的地方.有了命名空間之後,就可以在棧區中存放相同的名字 存放的名字 存放的python直譯器內建的名字 存活週期 python直譯器啟動則產生,python直譯器關閉則銷毀 print input 存放的名字 只要不是函式內定義 也不是內建的,剩下的都是全域性命名空間...

命名空間和作用域

函式內部的函式只能在函式內部呼叫,不能在函式外部呼叫,通過接下來的學習你將會知道為什麼會出現這種情況。def f1 def f2 print from f2 f2 f2 nameerror name f2 is not defined 命名空間 name spaces 在記憶體管理那一章節時,我們曾...