自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

a is b 為 True,a == b 一定為 True 嗎?

開發(fā) 后端
在我們?nèi)粘J褂?Python 時,大家可能有這樣一種認(rèn)識:a == b 為 True,a is b 不一定為 True a is b 為 True,則 a == b 一定為 True。

 [[380096]]

在我們?nèi)粘J褂?Python 時,大家可能有這樣一種認(rèn)識:

  • a == b 為 True,a is b 不一定為 True
  • a is b 為 True,則 a == b 一定為 True
  1. >>> a = 'abc!' 
  2. >>> b = 'abc!' 
  3. >>> a == b 
  4. True 
  5. >>> a is b 
  6. False 
  7. >>> c = a 
  8. >>> a is c 
  9. True 
  10. >>> a == c 
  11. True 

這是因?yàn)?== 只比較值,而 is 同時比較值和內(nèi)存地址。簡單來說:你左手邊有一個人,右手邊有一個人,兩個人長得一模一樣,那么左手邊的人==右手邊的人;你左手邊有一個人,一分鐘以后這個人走到了你的右手邊,那么剛才左手邊的人 is 現(xiàn)在右手邊的人

但凡事總有意外,情況下面的代碼:

 

為什么會出現(xiàn)這種情況?a is b為 True,a == b卻為 False。

你可以先停在這里,猜一下a 和 b 里面的值到底是什么東西。

現(xiàn)在來揭開答案,我們來網(wǎng)上看兩行:

 

a 和 b 的值為nan,它的意思是Not a Number,非數(shù)。

nan與任何數(shù),包括它自己比較,結(jié)果都是 False,這是IEEE-754規(guī)定的:

 

Python 在實(shí)現(xiàn)這個數(shù)據(jù)的時候,根據(jù) IEEE-754的要求,也做了限制:

 

相關(guān)的文檔地址詳見 Python 的 math 庫

所以,這里 a == b 為 False,是一種特殊情況。并不是 Python 出現(xiàn)了錯誤。

本文轉(zhuǎn)載自微信公眾號「未聞Code」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系未聞Code公眾號。

 

責(zé)任編輯:武曉燕 來源: 未聞Code
相關(guān)推薦

2023-12-20 08:22:29

JavaIntegertrue

2023-05-10 16:15:58

javaScript算法開發(fā)

2023-03-28 08:53:18

操作符數(shù)字字符串

2015-11-23 10:09:30

Java

2023-08-13 16:17:31

2024-09-11 08:38:02

JavaScriptC#語言編程

2022-04-26 06:53:37

HBaseMD5RowKey

2013-09-26 11:22:34

Informatica

2012-05-29 13:15:04

B2B

2016-12-22 18:38:49

JavaAndroid

2021-07-12 23:53:22

Python交換變量

2024-06-03 10:43:34

2023-11-02 07:18:51

JavaLombok

2012-12-04 10:16:10

創(chuàng)業(yè)B2B

2019-07-29 12:53:23

2022-04-14 18:14:56

元宇宙B2B互聯(lián)網(wǎng)

2020-04-01 18:08:57

MySQL B-樹B+樹

2019-08-29 10:46:22

MySQL索引數(shù)據(jù)庫

2012-12-31 10:16:13

搜狐移動互聯(lián)網(wǎng)B2B2C
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號