模塊初識

模塊初識

  1. 儲存着不少經常使用功能的py文件就是一個模塊.模塊就是一系列經常使用功能的集合體python

  2. 爲何要使用模塊?app

    • 組織結構更清晰,方便管理,易維護
    • 拿來主義,節省代碼,大大提高開發效率
  3. py文件兩種功能:函數

    • 執行代碼(承載代碼),俗稱腳本
    • 模塊(被引用,被執行)
  4. 模塊的分類code

    • 內置模塊,也叫標準庫,此類模塊就是python 解釋器提供的,time,os等200多種接口

    • 第三方模塊,第三方庫,各類python大神寫的很是好用的模塊,必須經過pip install指令安裝的模塊,好比Django等,大概有6000多個ip

    • 自定義模塊,咱們本身定義的一些模塊內存

      # 示例
      # haha.py
      name = '劉德華'
      lst = [1, 2, 3]
      def fucn():
         print('haha模塊', name)
      def change():
         global name
         name = '張學友'
      def lst_append():
          lst.append(4)
      # 這個haha.py文件就是一個模塊
  5. 引用模塊的方法開發

    1. import使用:import 模塊名pip

      • 引用模塊會作三件事:
        1. 建立一個以模塊名命名的名稱空間,相似全局名稱空間(這裏保存的是變量與值的對應關係)
        2. 執行這個名稱空間(即導入的模塊)裏面的代碼,將其加載到內存.(若是屢次導入,則只有第一次會執行代碼)
        3. 經過此模塊名.的方式引用模塊裏面的內容(變量 函數名 類名等).這個名字和變量名沒有區別,都是'第一類的'.而且模塊中定義的名字來自兩個徹底不一樣的地方
      • 被導入的模塊有獨立的名稱空間
        • 每一個模塊都是一個獨立的名稱空間,定義在這個模塊中的函數,把這個模塊的名稱空間當作全局名稱空間,這樣咱們在編寫本身的模塊時,就不用擔憂咱們定義在本身模塊中的全局變量會在被導入時,與使用者的全局變量衝突.class

          # 示例
          # 當前是 hello.py
          import haha
          name = '劉亦菲'
          print(name) # 劉亦菲
          print(haha.name) # 劉德華
        • 爲導入的模塊起個別名

          # 方便書寫
          # 簡化代碼,能夠用於統一接口
          # 當前是 hello.py
          import haha as wow # as後面是想改的名字
          print(wow.name) # 劉德華
        • 引入多個模塊

          • 推薦多行逐個導入: 易於閱讀 易於編輯 易於搜索 易於維護
    2. from ... import ... 使用: from 模塊名 import 變量名

      • from ... import ...引入時,也會開闢一個以模塊名命名的名稱空間,可是會把咱們想要引入的具體內容(類如變量)的對應關係複製到當前執行文件的全局名稱空間中. 注意: 由於複製的是對應關係,因此比較像淺拷貝.

        # 例一
        name = '劉亦菲'
        from haha import name
        print(name) # 劉德華
        # 例二
        from haha import name  # 把模塊空間內name的對應關係複製了過來.
        from haha import change # 修改模塊空間內的name,可是name是不可變的數據類型,直接改變了指向.
        print(name) # 劉德華
        -----------------------------------------------
        # 例三
        from haha import lst # 把模塊空間內lst的對應關係複製了過來
        from haha import lst_append # 修改模塊空間內的lst,執行文件全局空間中的lst與模塊空間內的lst指向同一個內存地址
        print(lst) # [1, 2, 3, 4]
      • 引用模塊中的函數,若是此函數用到了一些變量,這些變量仍是今後模塊空間中尋找

      • 優勢: 使用起來方便了(不用模塊名. ,而是直接使用)

      • 缺點: 容易與當前執行文件產生覆蓋效果,至關於變量的從新賦值

相關文章
相關標籤/搜索