命名空間與作用域,函式物件,函式巢狀,閉包函式

2022-10-09 02:39:07 字數 1444 閱讀 9109

命名空間的分類

全域性命名空間:在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...