Python 字典是 Python 中的核心資料結構之一,它提供了一種使用鍵值對進行資料存儲和檢索的方式。在這份報告中,我們將深入探討字典的基本操作、物件導向程式設計(OOP)的概念,並介紹模組開發,以便提升程式的結構化與可維護性。
除了前面提到的基本操作,Python 字典還有一些非常強大的進階功能,如合併字典、字典推導式等。
Python 3.9 引入了合併字典的便捷方法:使用 |
運算符號來合併兩個字典,或 update()
方法來更新一個字典。
範例程式碼:
dict1 = {"Alice": 90, "Bob": 85}
dict2 = {"Charlie": 95, "David": 88}
# 使用 | 合併字典
merged_dict = dict1 | dict2
print(merged_dict) # 輸出: {'Alice': 90, 'Bob': 85, 'Charlie': 95, 'David': 88}
# 使用 update() 方法
dict1.update(dict2)
print(dict1) # 輸出: {'Alice': 90, 'Bob': 85, 'Charlie': 95, 'David': 88}
字典推導式類似於列表推導式,允許我們使用簡單的語法來快速生成字典。
範例程式碼:
# 生成一個數字平方字典
squares = {x: x**2 for x in range(1, 6)}
print(squares) # 輸出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
在 Python 中,可以使用雙底線(__
)來將屬性和方法設置為私有,這意味著它們不能被外部直接訪問。
範例程式碼:
class Student:
def __init__(self, name, score):
self.name = name
self.__score = score # 私有屬性
def __calculate_grade(self): # 私有方法
if self.__score >= 90:
return "A"
elif self.__score >= 80:
return "B"
else:
return "C"
def get_grade(self):
return self.__calculate_grade()
# 創建物件
student1 = Student("Alice", 92)
print(student1.get_grade()) # 輸出: A
# print(student1.__score) # 這會引發錯誤,因為 __score 是私有的
類別方法和靜態方法是兩種不需實例化物件即可使用的特殊方法。@classmethod
裝飾器將方法標記為類別方法,@staticmethod
則用來定義靜態方法。
範例程式碼:
class School:
school_name = "Python Academy"
@classmethod
def get_school_name(cls):
return cls.school_name
@staticmethod
def school_motto():
return "Learning by Doing"
# 呼叫類別方法與靜態方法
print(School.get_school_name()) # 輸出: Python Academy
print(School.school_motto()) # 輸出: Learning by Doing
在大型專案中,我們可以建立多個模組來分割功能,並使用 import
語法在不同模組之間調用功能。這樣的結構能使程式更加易於管理與維護。
範例:
假設我們有兩個模組,一個是 math_utils.py
,另一個是 main.py
。
math_utils.py
:
# 定義數學相關函數
def add(a, b):
return a + b
def multiply(a, b):
return a * b
main.py
:
# 引用 math_utils 模組
import math_utils
result1 = math_utils.add(3, 5)
result2 = math_utils.multiply(4, 6)
print(result1) # 輸出: 8
print(result2) # 輸出: 24
包是一種包含多個模組的資料夾,可以讓我們進一步組織程式檔案結構。使用 __init__.py
文件可以初始化包並方便地引用其中的模組。
今天我們透過字典的進階操作學習了如何更靈活地處理資料,並加強了對物件導向程式設計的理解。模組開發使得程式能夠更好地組織和重用。在接下來的學習中,我將探索更多進階的 Python 主題,如異步編程、數據庫操作和網頁開發。