🍖模塊介紹

一.模塊介紹

1.什麼是模塊

  • 模塊就是一系列功能的集合體

2.模塊的四種通用類別

  • 使用 Python 寫的 .py 文件, 例 : 文件名 test.py, 模塊名爲 test
  • 盛放有多個 py 文件的文件夾也是一個功能的集合體, 至關於一種超級模塊, 稱之爲
  • 已被編譯爲共享庫或DLL的C或C++擴展
  • 使用 C 編寫並連接到 Python 解釋器的內置模塊

3.模塊的三種來源

  • 自帶的模塊

    1. 內置模塊
    2. 標準庫
  • 第三方模塊

    • 能夠經過 pip 工具下載的別人寫的一些優秀的模塊
    • 例 : pip3 install requests
  • 自定義模塊

4.爲什麼要使用模塊

  • 使用自帶或第三方模塊 : 寫好的功能拿來就用, 提高開發效率
  • 使用自定義模塊 : 減小代碼冗餘, 讓程序的組織結構更清晰

3.模塊導入示例

  • 如下講解都以此示例
⛅"spam.py" 文件
print("i am spam")  # 只要執行此文件就會打印 "i am spam"

x = 1000
def aaa():
    print("i am spam.aaa")

def bbb():
    print("i am spam.bbb")
    aaa()

def change():
    global x
    x = 0

⛅"run.py" 執行文件
import spam   # 導入模塊先執行一次被導入模塊文件, 會打印 "i am spam"
import spam   # 以後的導入都是直接引用第一次導入的結果, 不會重複執行文件
import spam

x = 2000      # 當前執行文件下的變量 "x"
spam.aaa()    # 使用模塊的 "aaa" 功能, 打印 "i am spam.aaa"
spam.bbb()    # 使用模塊的 "bbb" 功能, 打印 "i am spam.bbb" 並調用模塊的 "aaa" 打印 "i am spam.aaa"
spam.change() # 使用了模塊的 "change" 功能,改變的是定義階段就規定好了的去 "spam" 名稱空間找變量名 "x"
print(x)      # 因此這裏打印的仍是 "run.py" 的 "x" : 2000
print(spam.x) # 而 "spam.py" 裏面的 "x" : 0

二.模塊使用之 import

1.首次導入模塊發生的三件事

  • 建立一個模塊的名稱空間
  • 執行模塊對應文件, 將執行文件產生的名字存放於這個名稱空間中
  • 在當前執行文件中拿到一個模塊名, 該模塊名指向被導入模塊的名稱空間

模塊導入

2.import 的使用

  • 強調 : 只有首次導入纔會執行被導入模塊文件, 並建立一個名稱空間
  • 以後的導入都是直接引用首次導入的結果
  • 模塊中功能的執行始終以模塊本身的名稱空間爲準
import spam
import spam
import spam
import spam
import spam

print(spam)  # <module 'spam' from 'F:\\Pycharm File\\spam.py'>
spam.aaa()

3.import 的優缺點

  • 優勢 : 知名道姓的引用某個模塊的名字, 不會有衝突
  • 缺點 : 須要加前綴, 引用次數多的時候就比較麻煩

4.爲模塊起別名

  • 名字比較長的狀況下
import spam as ss
import songhaixing as shawn

5.導入多個模塊

⛅不推薦使用
import os, sys, time

⛅推薦使用(清晰明瞭)
import os
import sys
import time

⛅導入模塊規範
1. Python內置模塊
2. 第三方模塊
3. 自定義模塊

import os
import sys
import 第三方
import spam

三.模塊使用之 from...import...

1.首次導入模塊發生三件事

  • 建立一個模塊的名稱空間
  • 執行對應文件, 將產生的名字存放於剛建立的名稱空間中 (前兩個步驟與 import 同樣)
  • 在當前名稱空間中拿到模塊中的名字, 能夠直接使用, 不用加任何前綴

2.from...import 的使用

  • import同樣,執行模塊中的功能,始終以模塊的名稱空間爲準
from spam import aaa, bbb, change

print(aaa)
aaa()
bbb()       #能夠直接調用
change()    #不須要調用名字

3.from...import 的優缺點

  • 優勢 : 不用加前綴, 直接引用模塊中的名字, 代碼更精簡
  • 缺點 : 容易與當前執行文件名稱空間中的重複名字發生衝突

4.爲模塊取別名

from spam import change as ch

print(ch)
ch()

5.導入多個模塊功能

from...improt *  # "*" 表明全部

from spam import *

aaa()
bbb()
change()
  • 可使用 __all__ 功能規定只能使用的模塊
⛅好比在 "spam.py" 文件中加入
__all__=["aaa","change"]

⛅那麼在另外一個文件中導入這個文件就只能使用這兩個規定的名字

夢裏有我聞過的花香 也有我與你初遇的地方

相關文章
相關標籤/搜索