【Python】import 用法
在 Python 中,import
是用來引入其他模組、套件或特定功能的關鍵字,讓你可以重複利用現有的程式碼,避免重複撰寫功能。以下是 import
的詳細說明及常見用法:
1. import
的基本概念
import
用於引入一個 Python 模組或套件,讓你可以使用其中的函數、類別或變數。
模組與套件
- 模組:是一個 Python 檔案(以
.py
結尾),其中包含定義的函數、類別或變數。- 範例:
math
模組、你自己撰寫的mymodule.py
。
- 範例:
- 套件:是一個包含多個模組的目錄,且該目錄下有
__init__.py
文件。- 範例:
os
套件、requests
套件。
- 範例:
2. import
的使用方式
2.1 匯入整個模組
-
語法:
import module_name
-
範例:
import math print(math.sqrt(16)) # 使用 math 模組中的 sqrt 函數
-
特點:需要使用
模組名稱.功能
的方式來存取模組內容。
2.2 匯入模組的特定部分
-
語法:
from module_name import specific_function_or_variable
-
範例:
from math import sqrt print(sqrt(16)) # 直接使用 sqrt 函數,無需加上模組名稱
-
特點:只匯入需要的部分,節省記憶體,但可能引發命名衝突。
2.3 匯入模組並重新命名
-
語法:
import module_name as alias
-
範例:
import numpy as np arr = np.array([1, 2, 3]) print(arr)
-
特點:透過別名縮短模組名稱,讓程式碼更簡潔。
2.4 匯入模組所有內容
-
語法:
from module_name import *
-
範例:
from math import * print(sqrt(16)) # 可以直接使用 math 中的所有功能
-
特點:
- 匯入所有內容,但不推薦,因為可能導致命名衝突。
- 建議明確列出需要匯入的內容(用
__all__
控制)。
2.5 匯入套件中的子模組
-
語法:
from package_name import submodule_name
-
範例:
from os import path print(path.exists("example.txt")) # 使用 os.path 模組中的 exists 函數
3. Python 搜尋模組的順序
當執行 import
時,Python 按照以下順序尋找模組:
- 內建模組:Python 標準庫中的模組,例如
math
、os
。 - 當前目錄:程式執行時所在的目錄。
- PYTHONPATH:環境變數中指定的路徑。
- 全域安裝的目錄:例如
site-packages
。
如果找不到模組,會拋出 ModuleNotFoundError
。
4. 常見的 import 模式比較
匯入方式 | 使用方式 | 優點 | 缺點 |
---|---|---|---|
import module_name |
module_name.function() |
清楚來源,避免命名衝突 | 使用時需要加上模組名稱 |
from module_name import func |
func() |
使用簡單,僅匯入需要的內容 | 可能導致命名衝突 |
import module_name as alias |
alias.function() |
模組名稱簡潔,程式碼更易閱讀 | 增加了別名學習的成本 |
from module_name import * |
function() |
簡單直接,適用於了解所有內容的情況 | 容易命名衝突,降低可讀性 |
5. 自訂模組的匯入
5.1 自訂模組
假設你有一個名為 mymodule.py
的檔案,內容如下:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
你可以在同目錄下使用:
import mymodule
print(mymodule.greet("Alice")) # 輸出: Hello, Alice!
5.2 結構化套件
假設你有以下檔案結構:
myproject/
├── main.py
└── mypackage/
├── __init__.py
├── module1.py
└── module2.py
mypackage/__init__.py
的內容:
from .module1 import func1
from .module2 import func2
__all__ = ["func1", "func2"]
使用:
from mypackage import func1
func1()
6. 結論
import
是 Python 中的核心功能,用於模組的重複利用。- 掌握不同的匯入方式,可以讓你的程式碼更高效、更清晰。
- 盡量避免使用
from module import *
,選擇明確的匯入方式,提升程式碼可讀性與維護性。