• <strike id="6sogq"><s id="6sogq"></s></strike>
  • <strike id="6sogq"></strike>

    千鋒教育-做有情懷、有良心、有品質的職業教育機構

    400-811-9990
    手機站
    千鋒教育

    千鋒學習站 | 隨時隨地免費學

    千鋒教育

    掃一掃進入千鋒手機站

    領取全套視頻
    千鋒教育

    關注千鋒學習站小程序
    隨時隨地免費學習課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當前位置:成都千鋒IT培訓  >  技術干貨  >  python詳細分析Python中運算符"=="和"is"的差別

    python詳細分析Python中運算符"=="和"is"的差別

    來源:千鋒教育
    發布人:xqq
    時間: 2023-11-08 14:29:41

    在講is和==這兩種運算符區別之前,首先要知道Python中對象包含的三個基本要素,分別是:id(身份標識)、pythontype()(數據類型)和value(值)。is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內容并不相同。下面來看看具體區別在哪。

    Python中比較兩個對象是否相等,一共有兩種方法,簡單來說,它們的區別如下:

    is是比較兩個引用是否指向了同一個對象(引用比較)。

    ==是比較兩個對象是否相等。

    >>>a=[1,2,3]

    >>>b=a

    >>>bisa#a的引用復制給b,他們在內存中其實是指向了用一個對象

    True

    >>>b==a#當然,他們的值也是相等的

    True

    >>>b=a[:]#b通過a切片獲得a的部分,這里的切片操作重新分配了對象,

    >>>bisa#所以指向的不是同一個對象了

    False

    >>>b==a#但他們的值還是相等的

    True

    實現原理

    is比較的是兩者是否是同一個對象,所以比較的是內存地址(id是否相同)。

    ==是值比較。不可變對象,例如int,str,它會直接進行值比較。對于Python已知的對象,會調用他們的__eq__函數來比較。(其實已知的對象應該也是通過內置的__eq__函數來比較的)。對于自定義的對象,如果實現了__eq__函數,就會使用它比較,如果沒有實現,效果和==是一樣的。

    對象緩存機制

    Python會對比較小的對象緩存,下次用到比較小的對象時,會去緩存區查找,如果找到,不會再開辟新的內存,而是繼續把小對象的地址賦給新的值。例子:

    >>>c=1

    >>>d=1

    >>>print(cisd)

    True

    >>>1000is10**3

    False

    >>>1000==10**3

    True

    通過計算得到的賦值,不會使用緩存區。從第一個代碼示例中可以看出。

    對于字符串,你可以通過使用intern函數強制使用緩存區

    以上內容為大家介紹了python培訓之詳細分析Python中運算符"=="和"is"的差別,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

    聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

    猜你喜歡LIKE

    python delattr函數如何使用?

    2023-11-10

    python time.strptime的格式化

    2023-11-10

    pythonGIL在Python多線程的應用

    2023-11-10

    最新文章NEW

    python中pdb模塊怎么用?

    2023-11-10

    Python如何截圖保存?

    2023-11-10

    python?中缺少module怎么辦?

    2023-11-10

    相關推薦HOT

    更多>>

    快速通道 更多>>

    最新開班信息 更多>>

    網友熱搜 更多>>