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

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

    • 分享

      【Python核心編程筆記】一、Python中一切皆對象

       頭號碼甲 2021-05-02

      Python中一切皆對象

      本章節(jié)首先對比靜態(tài)語言以及動態(tài)語言,然后介紹 python 中最底層也是面向?qū)ο笞钪匾膸讉€概念-object、type和class之間的關(guān)系,以此來引出在python如何做到一切皆對象、隨后列舉python中的常見對象。

      1.Python中一切皆對象

      Python的面向?qū)ο蟾鼜氐?,Java和C++中基礎(chǔ)類型并不是對象。在Python中,函數(shù)和類也是對象,屬于Python的一等公民。對象具有如下4個特征

      • 1.賦值給一個變量
      • 2.可以添加到集合對象中
      • 3.可以作為參數(shù)傳遞給函數(shù)
      • 4.可以作為函數(shù)地返回值

      下面從四個特征角度分別舉例說明函數(shù)和類也是對象

      1.1 類和函數(shù)都可以賦值給一個變量

      類可以賦值給一個變量

      class Person:
          def __init__(self, name="lsg"):
              print(name)
      
      
      if __name__ == '__main__':
          my_class = Person  # 類賦值給一個變量
          my_class()  # 輸出lsg,變量直接調(diào)用就可以實例化一個類,滿足上面的特征1,這里顯然說明類也是一個對象
          my_class("haha")  # 輸出haha
      
      

      函數(shù)可以賦值給一個變量

      def func_test(name='lsg'):
          print(name)
      
      
      if __name__ == '__main__':
          my_func = func_test
          my_func("haha") # 輸出haha,對變量的操作就是對函數(shù)的操作,等效于對象的賦值,滿足上面的特征1,說明函數(shù)是對象。
      

      1.2 類和函數(shù)都可以添加到集合中

      class Person:
          def __init__(self, name="lsg"):
              print(name)
      
      
      def func_test(name='lsg'):
          print(name)
      
      
      if __name__ == '__main__':
          obj_list = [func_test, Person]
          print(obj_list) # 輸出[<function func_test at 0x0000025856A2C1E0>, <class '__main__.Person'>]
      

      1.3 類和函數(shù)都可以作為參數(shù)傳遞給函數(shù)

      class Person:
          def __init__(self, name="lsg"):
              print(name)
      
      
      def func_test(name='lsg'):
          print(name)
      
      
      def print_type(obj):
          print(type(obj))
      
      
      if __name__ == '__main__':
          print_type(func_test)
          print_type(Person)
      

      輸出如下

      <class 'function'>
      <class 'type'>
      

      可以明顯地看出類和函數(shù)都是對象

      1.4 類和函數(shù)都可以作為函數(shù)地返回值

      class Person:
          def __init__(self, name="lsg"):
              print(name)
      
      
      def func_test(name='lsg'):
          print(name)
      
      
      def decorator_func():
          print("pre function")
          return func_test
      
      
      def decorator_class():
          print("pre class")
          return Person
      
      
      if __name__ == '__main__':
          decorator_func()()  # 返回的右值作為函數(shù)可以直接調(diào)用
          decorator_class()()  # 返回的右值作為類可以直接實例化
      

      2.type、object和class的關(guān)系

      代碼舉例如下, 可以得出三者的關(guān)系是type --> class --> obj

      2.1 type --> int --> a

      a = 1
      print(type(a)) # <class 'int'>
      print(type(int)) # <class 'type'>
      

      2.2 type --> str --> b

      b = 'abc'
      print(type(b)) # <class 'str'>
      print(type(str)) # <class 'type'>
      

      2.3 type --> Student --> stu

      class Student:
          pass
      
      stu = Student()
      print(type(stu)) # <class '__main__.Student'>
      print(type(Student)) # <class 'type'>
      

      2.4 type --> list --> c

      c = [1, 2]
      print(type(c)) # <class 'list'>
      print(type(list)) # <class 'type'>
      

      總結(jié)圖:
      file

      3.Python中常見的內(nèi)置類型

      對象的三個特征:身份、內(nèi)存和值

      • 身份:在內(nèi)存中的地址,可以用id(變量)函數(shù)來查看
      • 類型:任何變量都必須有類型

      常見的內(nèi)置類型如下

      3.1 None:全局只有一個

      如下代碼,兩個值為None的變量地址完全相同,可見None是全局唯一的

      a = None
      b = None
      print(id(a))
      print(id(b))
      print(id(a) == id(b))
      

      3.2 數(shù)值類型

      • int
      • float
      • complex(復(fù)數(shù))
      • bool

      3.3 迭代類型:iterator

      3.4 序列類型

      • list
      • bytes、bytearray、memoryview(二進(jìn)制序列)
      • range
      • tuple
      • str
      • array

      3.5 映射類型(dict)

      3.6 集合

      • set
      • frozenset

      3.7 上下文管理類型(with)

      3.8 其他

      • 模塊類型
      • class和實例
      • 函數(shù)類型
      • 方法類型
      • 代碼類型
      • object類型
      • type類型
      • elipsis類型
      • notimplemented類型

      歡迎關(guān)注我的公眾號查看更多文章

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多