91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

python面試題實例代碼分析

發布時間:2022-10-13 09:58:55 來源:億速云 閱讀:144 作者:iii 欄目:編程語言

本篇內容主要講解“python面試題實例代碼分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python面試題實例代碼分析”吧!

題目:下面這段代碼的執行結果是什么。
def multiply():
    return [lambda x: i * x for i in range(4)]

print([m(100) for m in multiply()])

運行結果:

[300, 300, 300, 300]

上面代碼的運行結果很容易被誤判為[0, 100, 200, 300]。首先需要注意的是multiply函數用生成式語法返回了一個列表,列表中保存了4個Lambda函數,這4個Lambda函數會返回傳入的參數乘以i的結果。需要注意的是這里有閉包(closure)現象,multiply函數中的局部變量i的生命周期被延展了,由于i最終的值是3,所以通過m(100)調列表中的Lambda函數時會返回300,而且4個調用都是如此。

如果想得到[0, 100, 200, 300]這個結果,可以按照下面幾種方式來修改multiply函數。

方法一:使用生成器,讓函數獲得i的當前值。

def multiply():
    return (lambda x: i * x for i in range(4))

print([m(100) for m in multiply()])

或者

def multiply():
    for i in range(4):
        yield lambda x: x * i

print([m(100) for m in multiply()])

方法二:使用偏函數,徹底避開閉包。

from functools import partial
from operator import __mul__

def multiply():
    return [partial(__mul__, i) for i in range(4)]

print([m(100) for m in multiply()])

到此,相信大家對“python面試題實例代碼分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

邓州市| 孟津县| 岑巩县| 寻乌县| 鄂伦春自治旗| 临沂市| 衡南县| 潮安县| 象山县| 建平县| 靖州| 贵德县| 新丰县| 饶平县| 南澳县| 汝城县| 淮安市| 宁南县| 铁岭市| 玉林市| 乌兰县| 温州市| 鹿邑县| 金沙县| 孟村| 长春市| 定远县| 澄城县| 内丘县| 锡林浩特市| 东阿县| 宁乡县| 汝州市| 张北县| 泾川县| 丰顺县| 旌德县| 黔西县| 海宁市| 大荔县| 舞阳县|