开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

          開通VIP
          python3判斷對象相等

          python所有對象分為可變對象(字典,列表),不可變對象(數(shù)值類型,字符串,元組),是否可變是指內(nèi)容是否可變
          可以用id()函數(shù),is,==,cmp判斷對象是否相等

          對象要素
          python中對象包含三個基本要素,如下:
          id(身份標識) 可以理解為c里面的指針或內(nèi)存地址
          type(數(shù)據(jù)類型)
          value(值)

          1.== 用來判斷兩個對象的值是否相等,比較內(nèi)存地址或者id,因此即使擁有相同屬性也會因為id不同而被判定為不相等。 (跟 Java 不同,Java 中 == 用來判斷是否是同一個對象)。==是運算符重載,是通過_eq_魔術(shù)方法來控制實現(xiàn)

          a="hello"b="hello"print(a==b,id(a)==id(b))//True True
          a=1.0b=1print(a==b,id(a)==id(b))//True False
          a=0b=0.00print(a==b,id(a)==id(b))//True False

          可以看出,number和string在賦值時,對于同一值不重新分配內(nèi)存,所以同一個值id相同。
          而其他數(shù)據(jù)類型(包括自定義類)在每次賦值時都會為每一個對象開辟一個新內(nèi)存予以存儲,所以id不同。

          2.is
          is 主要是判斷兩個變量是否引用的是同一個對象,如果是的話,則返回 true,否則返回 false(比較內(nèi)存地址)
          數(shù)字(0)和浮點數(shù)最好不用is判斷

          a=256b=256print(a is b,id(a)==id(b))//True True
          a=1.0b=1print(a is b,id(a)==id(b))//False False
          a=0b=0.00print(a is b,id(a)==id(b))//False False

          3.cmp
          python3已不支持,這里不再介紹了

          4._dict_的使用

          class test:    l=1    #類變量    def __init__(self,sl):   #sl,實例變量        self.sl=slprint(test.__dict__)t1=test(1)t2=test(1)print(t1.__dict__)print(t1==t2)print(t1.__dict__==t2.__dict__)#{'__module__': '__main__', 'l': 1, '__init__': <function test.__init__ at 0x7f204e0441e0>, #'__dict__': <attribute '__dict__' of 'test' objects>, '__weakref__': <attribute '__weakref__' of #'test' objects>, '__doc__': None}#{'sl': 1}#False#True

          python的實例有自己的dict,它對應(yīng)的類也有自己的dict (但是有些特殊的對象是沒有dict屬性的)
          當打印類的dict屬性時,列出了類所包含的屬性,包括一些類內(nèi)置屬性和類變量l以及構(gòu)造方法init
          而實例變量則包含在實例對象t1的dict屬性中,利用這一點可以很容易實現(xiàn)比較t1和t2的實例變量是否相同。

          一個對象的屬性查找順序遵循首先查找實例對象自己,然后是類,接著是類的父類。

          class test:    l=1    def __init__(self,sl):        self.sl=slt1=test(1)t2=test(1)t1.l=2print(test.l,t1.l)test.l=3print(test.l,t1.l,t2.l)//1 2//3 2 3

          字典轉(zhuǎn)對象兩種方法:
          一個字典如下

          dict={"a":1,     "b":2,}

          1.

          class test:    def __init__(self,dict):        self.a=dict['a']        self.b=dict['b']

          2.

          class test:    def __init__(self,dict):        self.__dict__.update(dict)
          本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          《源碼探秘 CPython》80. import機制的黑盒探測
          分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服