Python - 模組
你好,未來的 Python 巫師們!今天,我們將進入 Python 模組的奇幻世界。如果你是編程新手,也別擔心;我將成為你的友好導遊,一步步為你解釋一切。所以,拿起你的虛擬魔杖(鍵盤),我們一起深入探險吧!
Python 模組
想象一下,你正在建造一座魔法城堡(你的程序)。如果可以不用從頭開始建造,而是使用預先建造的塔樓、城牆和大門,直接嵌入,那不是很好嗎?這就是 Python 中的模組 - 你可以在程序中轻松使用的預編寫代碼。
Python 內建模組
Python 提供了一個寶藏箱般的內建模組。這些就像你可以立即使用的免費魔法咒語。我們來試一個吧!
import random
# 生成 1 到 10 之間的隨機數字
magic_number = random.randint(1, 10)
print(f"你的魔法數字是: {magic_number}")
在這個例子中,我們使用 random
模組來生成一個隨機數字。這就像從帽子裡變出兔子一樣,不過這裡是數字!
Python 用戶定義模組
內建模組雖然很棒,但有時你也需要創建自己的魔法咒語。這時,用戶定義模組就派上用場了。
創建一個 Python 模組
讓我們創建一個名為 magic_spells.py
的簡單模組:
# magic_spells.py
def levitate(object):
return f"{object} 正在空中飄浮!"
def disappear(object):
return f"{object} 已經消失在稀薄的空氣中!"
現在我們有自己的模組了,其中包含兩個魔法函數!
import 語句
為了使用我們新創建的模組,我們需要導入它:
import magic_spells
# 使用我們模組中的函數
print(magic_spells.levitate("書"))
print(magic_spells.disappear("兔子"))
輸出:
書正在空中飄浮!
兔子已經消失在稀薄的空氣中!
from ... import 語句
有時,你只需要從模組中獲取特定的咒語。這就是 from ... import
變得非常有用的地方:
from magic_spells import levitate
# 現在我們可以直接使用 levitate,而無需 magic_spells 前綴
print(levitate("椅子"))
輸出:
椅子正在空中飄浮!
from...import * 語句
如果你想要導入模組中的所有咒語,可以使用 from...import *
:
from magic_spells import *
# 現在我們可以直接使用所有函數
print(levitate("桌子"))
print(disappear("帽子"))
但是,要小心使用這個!這就像打開潘多拉的盒子 - 如果有相同名稱的函數,你可能会不小心覆蓋現有的函數。
import ... as 語句
有時,模組名稱可能會太長或令人困惑。你可以使用 import ... as
給它們起個綽號:
import magic_spells as spells
print(spells.levitate("鉛筆"))
查找模組
Python 會在以下位置查找模組:
- 當前目錄
- PYTHONPATH(如果設置了)
- 取決於安裝的默認目錄
PYTHONPATH 變量
PYTHONPATH 就像一張魔法地圖,告訴 Python 在哪裡可以找到額外的模組。你可以在系統的環境變量中設置它。
命名空間和作用域
將命名空間想象為你的魔法世界中的不同領域。每個模組都有自己的命名空間,從而避免同名的函數或變量之間的衝突。
模組屬性
模組具有特殊的屬性。讓我們來探索一些:
import magic_spells
print(magic_spells.__name__) # 列印模組的名稱
print(magic_spells.__file__) # 列印模組的文件路徑
name 屬性
__name__
屬性非常特別。當腳本直接運行時,它是 __main__
,當被導入時,它是模組的名稱。
# 在 magic_spells.py 中添加:
if __name__ == "__main__":
print("此模組正在直接運行")
else:
print("此模組正在被導入")
dir() 函數
dir()
函數就像一面魔法鏡子,告訴你模組中定義的所有名稱:
import magic_spells
print(dir(magic_spells))
reload() 函數
如果你對模組進行更改並希望在不需要重新啟動 Python 的情況下重新加載它,可以使用 reload()
:
from importlib import reload
import magic_spells
# 修改 magic_spells.py
reload(magic_spells)
Python 中的包
包就像包含多個模組的魔法書。它們只是具有特殊 __init__.py
文件的目錄。
以下是總結我們學過的導入方法的表格:
方法 | 語法 | 示例 |
---|---|---|
基本導入 | import module_name |
import magic_spells |
從導入 | from module_name import function_name |
from magic_spells import levitate |
導入所有 | from module_name import * |
from magic_spells import * |
導入為別名 | import module_name as alias |
import magic_spells as spells |
就是這樣,學徒們!你們剛剛學會了 Python 模組的基本知識。記住,熟練需要練習,所以繼續嘗試不同的模組,並創造屬於你自己的魔法 Python 世界。快樂編程!
Credits: Image by storyset