Python零基礎入門之函式閉包

2021-08-21 07:22:14 字數 1068 閱讀 4078

# 

函式的global

全域性變數:包含內建和全域性命名空間的所有全域性作用域資料

# 只有在區域性中宣告了全域性變數 這樣在區域性進行的修改同樣作用於全域性

# nonlocal

對於全域性變數無效 只作用於就近一層的區域性變數

# globals()

返回是全域性中的內容

locals()

返回的是本地的內容

# (本地是全域性那就是全域性,本地是區域性那就是區域性)

# 何為閉包函式?利用函式名

.closure()

返回none

為非閉包函式 反之為閉包函式

# 閉包函式為:巢狀函式中,內部函式必須呼叫外部函式的變數

# 閉包的好處:

1.持久化區域性變數的生命週期

# 2.

簡單方便節省資源,不需要不斷申請資源釋放記憶體資源

#

(只要內部函式在外部被呼叫就不用反覆定義儲存乙個變數,而是共用乙個資源)

def

outer():

a = 1

def

inner():

print(a)

returninner

innt =outer()

inn = outer()

inn() # 1

innt() # 1

兩次呼叫時

a = 1

並沒有在一次呼叫結束後直接釋放掉(持久化外部函式中的區域性變數)

print(outer.__closure__) # none

表示不是閉包

print(inn.__closure__) # cell at 0x000002326265f3a8

表示閉包

Python零基礎入門之函式

函式的命名空間和作用域 函式的三類命名空間 內建 全域性 區域性 兩大作用域 全域性 內建和全域性命名空間都屬於全域性作用域 區域性 區域性命名空間屬於區域性作用域 什麼是作用域鏈?就是由外而內的命名空間中的中的變數的生存週期都是就近原則 全域性作用域 大區域性作用域 小區域性作用域 函式的兩大引數...

零基礎學習 Python 之閉包

在正式講 閉包 之前我們首先得先知道 巢狀函式 這麼乙個東西,我在之前的文章中 零基礎學習 python 之函式物件 說過,函式不單單可以作為物件來傳遞,還可以在乙個函式裡面巢狀乙個函式,這個就是我們今天要講的巢狀函式。首先我們來看乙個例子 def my name def your name pri...

Python零基礎入門 基礎(七) 函式

函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可。特性 減少重複 使程式變的可擴充套件 使程式變得易維護 def calc x,y 函式名 res x y return res 返回函式執行結果 c calc a,b 呼叫函式,結果賦值給c變數 prin...