命名空間的分類
全域性命名空間:在py檔案中頂格編寫的**執行之後都會存入全域性命名空間
區域性命名空間:函式體**執行之後產生的都是區域性命名空間
# 內建命名空間:
input
# built-in:內建
# 全域性命名空間:
x = 10 # 變數名x
y = 20 # 變數名y
f 1 > 0:
z = 30
with open('a.txt', mode='wt') as f:
a = 333
while true:
c = 444
# 以上都是屬於頂格的
# 區域性命名空間:
x = 10 # 全域性命名空間
def foo(m): # 全域性命名空間
m = 111 # 呼叫函式時,才會執行函式**,名字m和n都存放於該函式的區域性命名空間中
n = 222 # 函式內
foo(111) # 呼叫產生函式命名空間
命名空間的載入順序是:內建命名空間--->全域性命名空間--->區域性命名空間命名空間的查詢順序:查詢乙個名字,必須從三個命名空間之一找到,要先確定自己當前在哪,基於當前所在的位置向外查詢
如果當前在區域性查詢,查詢順序為:區域性命名空間》全域性命名空間》內建命名空間
如果當前在全域性查詢,查詢順序為:全域性命名空間》內建命名空間
len = 10 # 全域性命名空間
def func(): # 函式
len = 20
# print(len) # 站在區域性查詢,找到的是20
func() # 呼叫產生區域性命名空間
print(len) # 站在全域性找,全域性有找全域性,全域性沒有找內建
# 區域性命名空間的巢狀
'''函式在定義階段名字的查詢順序就已經固定死了(特例)'''
x = 111
def f1():
x = 222
def f2():
x = 333
def f3():
x = 444
def f4():
x = 555
print(x)
# x = 555 特例
f4()
f3()
f2()
# 通過呼叫f1 執行所有的函式
作用域
函式物件,巢狀,命名空間與作用域
1 函式名可以被傳遞 2 函式名可以被當做引數傳遞給其餘函式 3 函式名可以當做函式的返回值 4 函式名可以當做容器型別的引數 例如 函式名可以被傳遞給變數 deffunc print test f func 變數名f指向函式的記憶體位址 通過該記憶體位址該變數可以找到函式對應的 塊 f 變數名f呼...
函式物件 命名空間 作用域
定義函式的三種方式 1.空函式 可以快速構建專案框架,使專案架構清晰明了 def func pass 2.無參函式 def func print from func 3.有參函式 def func x,y,args,kwargs pass 命名關鍵字引數 在函式定義階段 寫在 與 可變長引數之間的形...
函式物件,命名空間和作用域
目錄函式的巢狀 命名空間和作用域 作用域global關鍵字 nonlocal關鍵字 注意點python中一切皆物件 def f1 print from f1 func f1 print f1 f1 print func func 列印結果 f1 funcdef f1 print from f1 de...