Python新手如何進行閉包時綁定變量操作
更新時間:2020年05月29日 15:07:48 作者:愛喝馬黛茶的安東尼
在本篇文章里小編給大家分享的是關于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新手如何進行閉包時綁定變量操作的文章就介紹到這了,更多相關Python閉包時綁定變量實例內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
CentOS7上使用pyenv搭建Django環(huán)境
本文主要介紹了CentOS7上使用pyenv搭建Django環(huán)境,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11Python?matplotlib的spines模塊實例詳解
作為程序員,經常需要進行繪圖,下面這篇文章主要給大家介紹了關于Python?matplotlib的spines模塊的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-08-08python+requests實現(xiàn)接口測試的完整步驟
這篇文章主要給大家介紹了關于python+requests實現(xiàn)接口測試的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10