Python閉包之返回函數的函數用法樣本,python樣本

來源:互聯網
上載者:User

Python閉包之返回函數的函數用法樣本,python樣本

閉包(closure)不是什麼可怕的東西。如果用對了地方,它們其實可以很強大。閉包就是由其他函數動態產生並返回的函數,通俗地講,在一個函數的內部,還有一個“內層”的函數,這個“內層”的函數是被返回的,它可以訪問其建立者的局部命名空間中的變數。

下面是一個非常簡單的例子:

# 定義一個函數def make_closure(a):  # 在函數內部再定義一個函數,其實這個裡面的函數就被認為是閉包   def closure():     # 這裡列印一下傳遞進來的數字是什麼     print('I know the secret : %d' % a)   return closure# 給make_closure函數賦值,這個7就是給參數aclosure1 = make_closure(7)# 這個其實就是調用返回的closure函數,然後執行closure函數closure1()

運行結果:


我的理解:其實閉包就是一個函數A裡還有另一個函數B,因為傳回值是函數B,所以在調用函數A的時候,如果想讓函數B也執行,必須還要再調用一次函數B。

對於一個函數內嵌了N個函數,那麼就需要初始化N次。

你可能會想,這到底有什麼用。在實際工作中,你可以編寫帶有大量選項的非常一般化的函數,然後再組裝出更簡單更專門化的函數。

下面這個例子中建立了一個字串格式化函數:

def format_and_pad(template, space):  def formatter(x):    return (template % x).rjust(space)  return formatter# 建立一個始終返回15位字串的浮點數格式化器fmt = format_and_pad('%.4f',15)fmt(1.756)

運行結果:

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.