掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
今天給大家分享 3 個(gè)比較冷門(mén)的知識(shí)

第一個(gè):神奇的字典鍵
some_dict = {}
some_dict[5.5] = "Ruby"
some_dict[5.0] = "JavaScript"
some_dict[5] = "Python"Output:
>>> some_dict[5.5]
"Ruby"
>>> some_dict[5.0
"Python"
>>> some_dict[5]
"Python"
"Python" 消除了 "JavaScript" 的存在?
說(shuō)明:
注意: 具有不同值的對(duì)象也可能具有相同的哈希值(哈希沖突).
>>> 5 == 5.0
True
>>> hash(5) == hash(5.0)
True
當(dāng)執(zhí)行 some_dict[5] = "Python" 語(yǔ)句時(shí), 因?yàn)镻ython將 5 和 5.0 識(shí)別為 some_dict 的同一個(gè)鍵, 所以已有值 "JavaScript" 就被 "Python" 覆蓋了
第二個(gè):異常處理中的return
def some_func():
try:
return 'from_try'
finally:
return 'from_finally'
Output:
>>> some_func()
'from_finally'
說(shuō)明:
第三個(gè):相同對(duì)象的判斷
class WTF:
pass
Output:
>>> WTF() == WTF() # 兩個(gè)不同的對(duì)象應(yīng)該不相等
False
>>> WTF() is WTF() # 也不相同
False
>>> hash(WTF()) == hash(WTF()) # 哈希值也應(yīng)該不同
True
>>> id(WTF()) == id(WTF())
True
說(shuō)明:
class WTF(object):
def __init__(self): print("I")
def __del__(self): print("D")
Output:
>>> WTF() is WTF()
I
I
D
D
False
>>> id(WTF()) == id(WTF())
I
D
I
D
True
正如你所看到的, 對(duì)象銷毀的順序是造成所有不同之處的原因.

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流