日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python 中有 三個不可思議的返回功能

今天給大家分享 3 個比較冷門的知識

第一個:神奇的字典鍵

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 字典通過檢查鍵值是否相等和比較哈希值來確定兩個鍵是否相同.
  • 具有相同值的不可變對象在Python中始終具有相同的哈希值.

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

>>> 5 == 5.0
True
>>> hash(5) == hash(5.0)
True

當執(zhí)行 some_dict[5] = "Python" 語句時, 因為Python將 5 和 5.0 識別為 some_dict 的同一個鍵, 所以已有值 "JavaScript" 就被 "Python" 覆蓋了

第二個:異常處理中的return

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

Output:

>>> some_func()
'from_finally'

說明:

  • 當在 "try…finally" 語句的 try 中執(zhí)行 return, break 或 continue 后, finally 子句依然會執(zhí)行.
  • 函數(shù)的返回值由最后執(zhí)行的 return 語句決定. 由于 finally 子句一定會執(zhí)行, 所以 finally 子句中的 return 將始終是最后執(zhí)行的語句.

第三個:相同對象的判斷

class WTF:
pass

Output:

>>> WTF() == WTF() # 兩個不同的對象應該不相等
False
>>> WTF() is WTF() # 也不相同
False
>>> hash(WTF()) == hash(WTF()) # 哈希值也應該不同
True
>>> id(WTF()) == id(WTF())
True

說明:

  • 當調(diào)用 id 函數(shù)時, Python 創(chuàng)建了一個 WTF 類的對象并傳給 id 函數(shù). 然后 id 函數(shù)獲取其id值 (也就是內(nèi)存地址), 然后丟棄該對象. 該對象就被銷毀了.
  • 當我們連續(xù)兩次進行這個操作時, Python會將相同的內(nèi)存地址分配給第二個對象. 因為 (在CPython中) id 函數(shù)使用對象的內(nèi)存地址作為對象的id值, 所以兩個對象的id值是相同的.
  • 綜上, 對象的id值僅僅在對象的生命周期內(nèi)唯一. 在對象被銷毀之后, 或被創(chuàng)建之前, 其他對象可以具有相同的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

正如你所看到的, 對象銷毀的順序是造成所有不同之處的原因.


網(wǎng)頁名稱:Python 中有 三個不可思議的返回功能
當前URL:http://www.dlmjj.cn/article/dpeeshe.html