第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

全局/內(nèi)部變量沖突?(Python)

全局/內(nèi)部變量沖突?(Python)

湖上湖 2021-03-19 09:15:33
很抱歉這個愚蠢的問題,我是一名新手程序員。但是誰能告訴我為什么下面的程序會以這種方式運行?def lol(a):    a=[]    a.append(1)    return a現(xiàn)在當(dāng)我做k = [2, 3]lol(k)它返回1,但k仍然不變?為什么?非常感謝!
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經(jīng)驗 獲得超5個贊

在中l(wèi)ol(a),該行a=[]綁定a到新列表。在此行之后,a不再與綁定到同一列表k。因此,您實際上在函數(shù)中修改的是一個新列表,而不是您在參數(shù)中收到的列表。有關(guān)更多信息,請參閱docs。


如果您想k成為[1],則可以改成這樣的形式:


def lol(a):

    a[:] = [1]

    return a


k = [2, 3]

lol(k) # now k is equal to [1]


查看完整回答
反對 回復(fù) 2021-03-31
?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

檢查嵌入式注釋。


def lol(a): # a and k are pointing to same memory location

    a=[] # Now, new list is created, pointing to different memory address. 

    a.append(1)

return a # returning new list 


k = [2, 3]  # New list k is created

lol(k)

如果打印k,將得到[2,3]。它根本沒有被lol()更改。


查看完整回答
反對 回復(fù) 2021-03-31
  • 2 回答
  • 0 關(guān)注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號