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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Python 中,“0 is 0”總是“True”嗎?

在 Python 中,“0 is 0”總是“True”嗎?

犯罪嫌疑人X 2022-12-20 12:31:44
Python 3.8(或 CPython 3.8?)添加了警告SyntaxWarning: "is" with a literal. Did you mean "=="?對(duì)于代碼0 is 0。is我理解警告,并且知道和之間的區(qū)別==。但是,我也知道 CPython 緩存小整數(shù)的對(duì)象并在其他情況下共享它。(出于好奇,我只是再次檢查了代碼(header)。小整數(shù)緩存在tstate->interp->small_ints. 中0,1甚至更特殊,全局存儲(chǔ)在_PyLong_Zero和中_PyLong_One。所有新創(chuàng)建的ints 都是 viaPyLong_FromLong并且首先檢查它是否是一個(gè)小整數(shù)整數(shù)和緩存。)鑒于這種背景,如果你知道你有一個(gè)int對(duì)象,你可以說(shuō)支票x is 0應(yīng)該是安全的,對(duì)吧?另外,您可以推導(dǎo)出它0 is 0應(yīng)該始終是True,對(duì)嗎?或者這是 CPython 的一個(gè)實(shí)現(xiàn)細(xì)節(jié),而其他解釋器不遵循這個(gè)?哪個(gè)解釋器不遵循這個(gè)?盡管有這個(gè)更通用的問(wèn)題(我只是好奇),請(qǐng)考慮這個(gè)更具體的(示例)代碼:def sum1a(*args):    y = 0    for x in args:        if y is 0:            y = x        else:            y = y + x    return y對(duì)比:def sum1b(*args):    y = 0    for x in args:        if y == 0:            y = x        else:            y = y + x    return y對(duì)比:def sum1c(*args):    y = None    for x in args:        if y is None:            y = x        else:            y = y + x    if y is None:        return 0    return y對(duì)比:def sum2(*args):    y = 0    for x in args:        y = y + x    return y我有時(shí)更喜歡的原因sum1*是sum2,根據(jù)圖書館的不同,sum1*確實(shí)可以更有效率。例如,如果參數(shù)是一個(gè) Numpy/TensorFlow/PyTorch 數(shù)組,你真的會(huì)在這里保存一個(gè)(可能代價(jià)高昂的)操作。我更喜歡的原因sum1a是sum1b這sum1b會(huì)破壞某些輸入。例如,如果輸入是一個(gè) Numpy 數(shù)組,這將不起作用。當(dāng)然,你可以使用sum1cinstead of sum1a。但是,sum1a更短。所以這個(gè)更好?如果原始問(wèn)題的答案是這應(yīng)該始終有效,并且如果您同意這sum1a是最好的選擇,那么您將如何擺脫警告?有簡(jiǎn)單的解決方法嗎?總的來(lái)說(shuō),我可以看到警告是有用的。所以我不想完全禁用它。我只想為此特定語(yǔ)句禁用它。也許我可以將它包裝在一個(gè)函數(shù)中:def is_(a, b):     return a is b然后只需使用if is_(y, 0): .... 這行得通嗎?這是一個(gè)好主意嗎?
查看完整描述

1 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

不,不是。舉例來(lái)說(shuō),Python的Rust 實(shí)現(xiàn)返回False

>>>>> 0 is 0
False

這并沒(méi)有錯(cuò),盡管我希望這會(huì)在未來(lái)的版本中發(fā)生變化(它已經(jīng)發(fā)生了?。?。

iscalls idwho 唯一的規(guī)定是返回的 id 對(duì)于給定對(duì)象是唯一且不變的。數(shù)字(此處)的源代碼表示是否0映射到不同的對(duì)象取決于實(shí)現(xiàn)來(lái)定義。


查看完整回答
反對(duì) 回復(fù) 2022-12-20
  • 1 回答
  • 0 關(guān)注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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