中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Python如何進行閉包時綁定變量操作

發布時間:2020-07-20 16:09:33 來源:億速云 閱讀:154 作者:小豬 欄目:開發技術

小編這次要給大家分享的是詳解Python如何進行閉包時綁定變量操作,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

搞不清楚在閉包(closures)中Python是怎樣綁定變量的

看這個例子:

>>> def create_multipliers():
...   return [lambda x : i * x for i in range(5)]
>>> for multiplier in create_multipliers():
...   print multiplier(2)
...

期望得到下面的輸出:

0

2

4

6

8

但是實際上得到的是:

8

8

8

8

8

實例擴展:

# coding=utf-8
__author__ = 'xiaofu'

# 解釋參考 http://docs.python-guide.org/en/latest/writing/gotchas/#late-binding-closures

def closure_test1():
  """
  每個closure的輸出都是同一個i值
  :return:
  """
  closures = []
  for i in range(4):
    
    def closure():
      print("id of i: {}, value: {} ".format(id(i), i))

    closures.append(closure)

  # Python's closures are late binding.
  # This means that the values of variables used in closures are looked up at the time the inner function is called.

  for c in closures:
    c()

def closure_test2():

  def make_closure(i):

    def closure():
      print("id of i: {}, value: {} ".format(id(i), i))

    return closure

  closures = []

  for i in range(4):
    closures.append(make_closure(i))

  for c in closures:
    c()


if __name__ == '__main__':
  closure_test1()
  closure_test2()

輸出:

id of i: 10437280, value: 3 
id of i: 10437280, value: 3 
id of i: 10437280, value: 3 
id of i: 10437280, value: 3 
id of i: 10437184, value: 0 
id of i: 10437216, value: 1 
id of i: 10437248, value: 2 
id of i: 10437280, value: 3

看完這篇關于詳解Python如何進行閉包時綁定變量操作的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德兴市| 四川省| 和龙市| 宁城县| 海淀区| 紫阳县| 蒙阴县| 正宁县| 临清市| 津南区| 衡阳县| 华亭县| 洪泽县| 开封县| 加查县| 迁安市| 林西县| 新昌县| 上饶县| 茶陵县| 商水县| 新密市| 惠来县| 临澧县| 英山县| 通河县| 清丰县| 南江县| 东至县| 太仆寺旗| 普兰店市| 宽甸| 星子县| 邵阳县| 湘西| 资源县| 大兴区| 屏东市| 盐城市| 错那县| 平罗县|