乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python3判斷對(duì)象相等

       LibraryPKU 2019-08-21

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

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

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

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

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

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

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

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

      4._dict_的使用

      class test:
          l=1    #類變量
          def __init__(self,sl):   #sl,實(shí)例變量
              self.sl=sl
      print(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的實(shí)例有自己的dict,它對(duì)應(yīng)的類也有自己的dict (但是有些特殊的對(duì)象是沒有dict屬性的)
      當(dāng)打印類的dict屬性時(shí),列出了類所包含的屬性,包括一些類內(nèi)置屬性和類變量l以及構(gòu)造方法init
      而實(shí)例變量則包含在實(shí)例對(duì)象t1的dict屬性中,利用這一點(diǎn)可以很容易實(shí)現(xiàn)比較t1和t2的實(shí)例變量是否相同。

      一個(gè)對(duì)象的屬性查找順序遵循首先查找實(shí)例對(duì)象自己,然后是類,接著是類的父類。

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

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

      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)

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多