1. 程式人生 > >【轉】Python關鍵語法-閉包:函式中的函式用法例項

【轉】Python關鍵語法-閉包:函式中的函式用法例項

本文例項講述了Python閉包的用法。分享給大家供大家參考,具體如下:

Python函式中也可以定義函式,也就是閉包。跟js中的閉包概念其實差不多,舉個Python中閉包的例子。

def make_adder(addend):
  def adder(augend):
    return augend + addend
  return adder
p = make_adder(23)
q = make_adder(44)
print(p(100))
print(q(100))

執行結果是:123和144.

為什麼。Python中一切皆物件,執行p(100),其中p是make_adder(23)這個物件,也就是addend這個引數是23,你又傳入了一個100,也就是augend引數是100,兩者相加123並返回。

有沒有發現make_adder這個函式,裡面定義了一個閉包函式,但是make_adder返回的return卻是裡面的這個閉包函式名,這就是閉包函式的特徵。

再看一個Python閉包的例子:

def hellocounter (name):
  count=[0]
  def counter():
    count[0]+=1
    print('Hello,',name,',',count[0],' access!')
  return counter
hello = hellocounter('ma6174')
hello()
hello()
hello()

執行結果:

tantengdeMacBook-Pro:learn-python tanteng$ python3 closure.py 
Hello, ma6174 , 1 access!
Hello, ma6174 , 2 access!
Hello, ma6174 , 3 access!

使用閉包實現了計數器的功能,這也是閉包的一個特點,返回的值儲存在了記憶體中,所以可以實現計數功能。

轉自:小談部落格 http://www.tantengvip.com/2015/07/python-closure/

希望本文所述對大家Python程式設計有所幫助。

以上是網際網路使用者為您的的內容,在阿里雲內部有更多的關於Python函式中的函式(閉包)用法例項_python的內容,歡迎繼續使用右上角搜尋按鈕進行搜尋python、閉包、函式中的函式、以便於您獲取更多的相關資訊。