久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

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() # 兩個不同的對象應(yīng)該不相等

    False

    >>> WTF() is WTF() # 也不相同

    False

    >>> hash(WTF()) == hash(WTF()) # 哈希值也應(yīng)該不同

    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

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

好啦,今天的分享到這里就結(jié)束了!希望大家持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會有大量優(yōu)質(zhì)內(nèi)容與大家分享!版權(quán)聲明:轉(zhuǎn)載文章來自公開網(wǎng)絡(luò),版權(quán)歸作者本人所有,推送文章除非無法確認,我們都會注明作者和來源。如果出處有誤或侵犯到原作者權(quán)益,請與我們聯(lián)系刪除或授權(quán)事宜。

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機構(gòu)!

    1. 主站蜘蛛池模板: 沧州市| 定西市| 金秀| 楚雄市| 绩溪县| 名山县| 嘉荫县| 巴彦县| 冷水江市| 玉林市| 隆回县| 平顶山市| 平谷区| 平定县| 蒙山县| 哈尔滨市| 广水市| 黔西县| 绥德县| 新化县| 读书| 德州市| 南阳市| 石首市| 双峰县| 应城市| 浠水县| 上犹县| 江源县| 深水埗区| 辽中县| 广西| 凤凰县| 西贡区| 朝阳县| 柘城县| 鹤峰县| 达州市| 略阳县| 石棉县| 台山市|