python 閉包 python 閉包

2021-10-21 03:48:33 字數 1092 閱讀 9095

閉包

因為python中函式也可以當作物件,所以如果出現當我們返回乙個函式,而該函式含有外部變數的時候就形成了閉包。

閉包的特點:

是個巢狀函式

可以獲得非區域性的變數

將函式當作物件返回

看乙個例子會更易理解:

def make_printer(msg):

msg = "hi there"

def printer():

print(msg)

return printer

myprinter = make_printer("hello there")

myprinter()

hi there

可以看出,myprinter返回的是函式物件(閉包特點3,1),而myprinter()則獲取了printer()域之外的變數值(閉包特點2)

閉包和nonlocal

下面兩個例子則是獲得了域之外的,關鍵字nonlocal的使用獲得累加的效果。

def make_counter():

count = 0

def inner():

nonlocal count # 去掉報錯,count是不可變型別

count += 1

return count

return inner

counter = make_counter()

c = counter()

print(c)

c = counter()

print(c)

上文使用nonlocal 是因為int型別是不可變型別,若不使用nonlocal則,無法對inner()中的count 進行更改值

而對可變型別,則例子如下:

def make_summer():

data =

def summer(val):

_sum = sum(data)

return _sum

return summer

summer = make_summer()

s = summer(1)

print(s)

s = summer(2)

print(s)

python怎麼閉包 Python閉包

python閉包教程 閉包就是乙個 在閉包的記憶功能 在 python 中,獲到閉包中的變數讓閉包本身擁有了記憶效應,閉包中的邏輯可以修改閉包捕獲的變數,變數會跟隨閉包生命期一直存在,閉包本身就如同變數一樣擁有了記憶功能。python閉包定義詳解 語法def func param def func ...

python閉包技巧 Python閉包

本篇文章幫大家學習python閉包,包含了python閉包使用方法 操作技巧 例項演示和注意事項,有一定的學習價值,大家可以用來參考。在本文中,您將了解什麼是python閉包,如何定義閉包以及應該如何使用閉包。巢狀函式中的非區域性變數 在進入閉包之前,我們必須先了解乙個巢狀函式和非區域性變數。在函式...

python怎麼閉包 python的閉包

一 思考乙個問題 我們要給定乙個x,要求一條直線上x對應的y的值。公式是y kx b。我們需要用k,b來確定這條直線,則我們實現的函式應該有3個引數 defline k,b,x print k x b line 1,3,4 line 1,3,5 line 1,3,6 可以看到,我們每次修改x都要重新...