更新於 2024/11/12閱讀時間約 12 分鐘

[Python教學] 中級:模組與套件

Python 模組和套件系統讓我們的程式可以變得更高效且具備更多功能。本篇文章將深入介紹 Python 的模組,包括模組的匯入與使用、Python 的內建模組,以及如何透過 pip 安裝第三方套件,讓您的開發流程更加便利。


1. 模組的匯入與使用

Python 的模組是一組封裝好的程式碼,可以匯入到其他 Python 檔案中使用,避免重複撰寫相同的程式碼並提高程式的組織性。Python 本身內建了許多模組,此外,我們也可以建立自訂模組或安裝第三方套件來擴展功能。

匯入模組的語法

Python 提供幾種不同的匯入方式,視情況選擇適合的方式:

import 模組名稱

這種語法將整個模組匯入,可以使用 模組名稱.功能 的格式來調用模組中的功能。

範例:匯入 math 模組

import math
result = math.sqrt(16) # 使用 math 模組的 sqrt 函數
print("16 的平方根是:", result)

使用 from 關鍵字匯入特定功能

如果只想匯入模組中的部分功能,可以使用 from 模組 import 功能 的語法。

from math import sqrt, pi
print("16 的平方根是:", sqrt(16))
print("圓周率 pi 的值是:", pi)

使用 as 關鍵字設定別名

當模組名稱太長或容易和變數名混淆時,我們可以為模組設定一個別名。

import math as m
print("16 的平方根是:", m.sqrt(16))

2. Python 內建模組

Python 提供了大量的內建模組,讓開發者可以直接使用,無需安裝。以下是幾個常用的內建模組介紹:

2.1 math 模組

math 模組包含了許多數學運算函數,例如平方根、三角函數、對數運算等。

import math
print("16 的平方根是:", math.sqrt(16))
print("圓周率 pi 的值是:", math.pi)

2.2 random 模組

random 模組提供生成隨機數的功能,適合用於隨機抽樣、模擬、遊戲開發等應用。

常用功能

  • 生成隨機整數random.randint(a, b)
  • 從序列中隨機選擇random.choice(sequence)
  • 生成 0 到 1 的隨機浮點數random.random()

範例

import random

print("隨機整數:", random.randint(1, 10))
print("隨機選擇一個元素:", random.choice(['apple', 'banana', 'cherry']))

2.3 os 模組

os 模組提供了操作系統層面的功能,比如文件和目錄管理。這個模組讓我們能夠輕鬆地與作業系統互動。

常用功能

  • 獲取當前工作目錄os.getcwd()
  • 變更目錄os.chdir(path)
  • 列出目錄內容os.listdir(path)
  • 檢查路徑是否存在os.path.exists(path)

範例

import os

current_dir = os.getcwd()
print("目前目錄:", current_dir)

os.makedirs("test_directory", exist_ok=True)
print("目錄內容:", os.listdir(current_dir))

2.4 sys 模組

sys 模組用於與 Python 解釋器互動,主要提供系統級別的參數和函數,比如獲取命令行參數、控制解釋器的執行等。

常用功能

  • 命令行參數sys.argv(第一個參數為程式名稱,之後為命令行參數)
  • 退出程序sys.exit()
  • 獲取 Python 版本sys.version

範例

import sys

print("Python 版本:", sys.version)
print("命令行參數:", sys.argv)

2.5 time 模組

time 模組提供了時間相關的操作,如取得當前時間、計算執行時間等。

常用功能

  • 獲取當前時間(秒)time.time()
  • 延遲執行time.sleep(seconds)
  • 格式化時間time.strftime(format, time.localtime())

範例

import time

print("當前時間(秒):", time.time())
time.sleep(1)
print("一秒後執行")
print("格式化時間:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

2.6 datetime 模組

datetime 模組提供了處理日期和時間的高級功能,適合用於時間戳記、日期計算等應用,比 time 模組更直觀。

常用功能

  • 取得當前日期和時間datetime.datetime.now()
  • 取得特定日期時間datetime.datetime(year, month, day, hour, minute, second)
  • 日期運算:加減時間,計算日期之間的差值

範例

from datetime import datetime, timedelta

now = datetime.now()
print("現在時間:", now)

# 加一天
tomorrow = now + timedelta(days=1)
print("明天這時候:", tomorrow)

2.7 re 模組(正則表達式)

re 模組提供了正則表達式操作,用於模式匹配和字符串操作,特別適合進行複雜的字串處理。

常用功能

  • 搜尋字串是否符合正則表達式re.search(pattern, string)
  • 替換字串re.sub(pattern, repl, string)
  • 分割字串re.split(pattern, string)

範例

import re

text = "Hello, my number is 12345"
match = re.search(r"\d+", text)
if match:
print("找到數字:", match.group())

2.8 collections 模組

collections 模組提供了幾種高效的資料結構,例如 Counterdefaultdictnamedtuple,適合處理複雜的資料需求。

常用功能

  • 計算元素頻率Counter
  • 帶有預設值的字典defaultdict
  • 具名元組namedtuple

範例

from collections import Counter, defaultdict, namedtuple

# Counter
counter = Counter("hello world")
print("字母出現次數:", counter)

# defaultdict
dd = defaultdict(int)
dd['apple'] += 1
print("defaultdict:", dd)

# namedtuple
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print("Point:", p.x, p.y)

2.9 json 模組

json 模組用於解析和生成 JSON 資料格式,適合處理 API 數據、存取結構化資料。

常用功能

  • 將 Python 資料轉換為 JSONjson.dumps(obj)
  • 將 JSON 字串解析為 Python 資料json.loads(json_string)

範例

import json

data = {'name': 'John', 'age': 30, 'city': 'New York'}
json_data = json.dumps(data)
print("轉為 JSON 字串:", json_data)

parsed_data = json.loads(json_data)
print("解析 JSON:", parsed_data)



3. 安裝第三方套件(pip)

Python 的 pip 工具用於管理和安裝第三方套件。第三方套件是一群由社群開發的模組,存放在 Python 的官方套件庫 PyPI 上,能大幅擴展 Python 的功能。

檢查是否安裝了 pip

一般來說,Python 會自帶 pip,但可以透過以下指令確認:

pip --version

若無法找到 pip,可以到 Python 官方網站 下載最新版的 Python,或執行 python -m ensurepip --upgrade 來安裝 pip。

使用 pip 安裝套件

以下是使用 pip 安裝、更新、列出和移除套件的基本指令:

  • 安裝套件pip install 套件名稱
  • 更新套件pip install --upgrade 套件名稱
  • 列出已安裝套件pip list
  • 移除套件pip uninstall 套件名稱

範例:安裝 requests 套件

requests 是一個用於 HTTP 請求的套件,可以幫助我們向網站發送請求並取得網頁內容。

pip install requests

安裝後,可以在 Python 程式中使用 requests 模組來取得網頁數據:

import requests

response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.json())

使用 requirements.txt 來管理專案依賴

當開發一個需要多個套件的專案時,可以使用 requirements.txt 文件來列出所有依賴套件,並使用以下指令安裝所有列出的套件:

pip install -r requirements.txt

requirements.txt 文件格式非常簡單,每行指定一個套件名稱,後面可以跟套件的版本號:

requests==2.26.0
numpy==1.21.2

總結

本文介紹了 Python 模組的匯入和使用方法、常見的內建模組和其應用範例、以及如何使用 pip 安裝和管理第三方套件。掌握這些模組和套件管理技巧,能有效提升開發效率,幫助您更靈活地應對各種程式需求。希望這篇文章能讓您對 Python 模組和套件系統有更深入的理解!

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.