本篇內(nèi)容主要講解“python面試題實(shí)例代碼分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“python面試題實(shí)例代碼分析”吧!
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供高明網(wǎng)站建設(shè)、高明做網(wǎng)站、高明網(wǎng)站設(shè)計(jì)、高明網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、高明企業(yè)網(wǎng)站模板建站服務(wù),十年高明做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
def multiply(): return [lambda x: i * x for i in range(4)] print([m(100) for m in multiply()])
運(yùn)行結(jié)果:
[300, 300, 300, 300]
上面代碼的運(yùn)行結(jié)果很容易被誤判為[0, 100, 200, 300]
。首先需要注意的是multiply
函數(shù)用生成式語法返回了一個(gè)列表,列表中保存了4個(gè)Lambda函數(shù),這4個(gè)Lambda函數(shù)會(huì)返回傳入的參數(shù)乘以i
的結(jié)果。需要注意的是這里有閉包(closure)現(xiàn)象,multiply
函數(shù)中的局部變量i
的生命周期被延展了,由于i
最終的值是3
,所以通過m(100)
調(diào)列表中的Lambda函數(shù)時(shí)會(huì)返回300
,而且4個(gè)調(diào)用都是如此。
如果想得到[0, 100, 200, 300]
這個(gè)結(jié)果,可以按照下面幾種方式來修改multiply
函數(shù)。
方法一:使用生成器,讓函數(shù)獲得i
的當(dāng)前值。
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()])
方法二:使用偏函數(shù),徹底避開閉包。
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面試題實(shí)例代碼分析”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
文章標(biāo)題:python面試題實(shí)例代碼分析
URL分享:http://aaarwkj.com/article44/jegphe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站排名、微信公眾號、、網(wǎng)站內(nèi)鏈、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)