日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

3 個(gè)不可思議的 Python 返回值

https://github.com/leisurelicht/wtfPython-cn

第一個(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" 的存在?

 

說明:

  • Python 字典通過檢查鍵值是否相等和比較哈希值來確定兩個(gè)鍵是否相同.

  • 具有相同值的不可變對(duì)象在Python中始終具有相同的哈希值.

注意: 具有不同值的對(duì)象也可能具有相同的哈希值(哈希沖突).

>>> 5 == 5.0
True
>>> hash(5) == hash(5.0)
True
  • 當(dāng)執(zhí)行 some_dict[5] = "Python"語句時(shí), 因?yàn)镻ython將55.0識(shí)別為some_dict的同一個(gè)鍵, 所以已有值 "JavaScript" 就被 "Python" 覆蓋了.

  • 這個(gè) StackOverflow的 回答(https://stackoverflow.com/a/32211042/4354153) 漂亮的解釋了這背后的基本原理.

第二個(gè):異常處理中的return

def some_func:
try:
return 'from_try'
finally:
return 'from_finally'

Output:

>>> some_func
'from_finally'

說明:

  • 當(dāng)在 "try...finally" 語句的 try中執(zhí)行return,breakcontinue后,finally子句依然會(huì)執(zhí)行.

  • 函數(shù)的返回值由最后執(zhí)行的 return語句決定. 由于finally子句一定會(huì)執(zhí)行, 所以finally子句中的return將始終是最后執(zhí)行的語句.

第三個(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

 

說明:

  • 當(dāng)調(diào)用 id函數(shù)時(shí), Python 創(chuàng)建了一個(gè)WTF類的對(duì)象并傳給id函數(shù). 然后id函數(shù)獲取其id值 (也就是內(nèi)存地址), 然后丟棄該對(duì)象. 該對(duì)象就被銷毀了.

  • 當(dāng)我們連續(xù)兩次進(jìn)行這個(gè)操作時(shí), Python會(huì)將相同的內(nèi)存地址分配給第二個(gè)對(duì)象. 因?yàn)?(在CPython中) id函數(shù)使用對(duì)象的內(nèi)存地址作為對(duì)象的id值, 所以兩個(gè)對(duì)象的id值是相同的.

  • 綜上, 對(duì)象的id值僅僅在對(duì)象的生命周期內(nèi)唯一. 在對(duì)象被銷毀之后, 或被創(chuàng)建之前, 其他對(duì)象可以具有相同的id值.

  • 那為什么 is操作的結(jié)果為False呢? 讓我們看看這段代碼.

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ì)象銷毀的順序是造成所有不同之處的原因.

分享到:
標(biāo)簽:Python
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定