Python - 模組

你好,未來的 Python 巫師們!今天,我們將進入 Python 模組的奇幻世界。如果你是編程新手,也別擔心;我將成為你的友好導遊,一步步為你解釋一切。所以,拿起你的虛擬魔杖(鍵盤),我們一起深入探險吧!

Python - Modules

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 會在以下位置查找模組:

  1. 當前目錄
  2. PYTHONPATH(如果設置了)
  3. 取決於安裝的默認目錄

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