iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
Python

Python探索之旅:從基礎到實踐系列 第 3

Day 3: Python 字典的使用、物件導向與模組開發

  • 分享至 

  • xImage
  •  

1. 引言

Python 字典是 Python 中的核心資料結構之一,它提供了一種使用鍵值對進行資料存儲和檢索的方式。在這份報告中,我們將深入探討字典的基本操作、物件導向程式設計(OOP)的概念,並介紹模組開發,以便提升程式的結構化與可維護性。

2. 字典的進階操作

除了前面提到的基本操作,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}

3. 物件導向程式設計 (OOP) 的進一步探討

私有屬性與方法

在 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

4. 模組開發進階

建立多個模組並進行模組間的相互調用

在大型專案中,我們可以建立多個模組來分割功能,並使用 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
包 (Packages) 的使用

包是一種包含多個模組的資料夾,可以讓我們進一步組織程式檔案結構。使用 __init__.py 文件可以初始化包並方便地引用其中的模組。

5. 結論與未來學習方向

今天我們透過字典的進階操作學習了如何更靈活地處理資料,並加強了對物件導向程式設計的理解。模組開發使得程式能夠更好地組織和重用。在接下來的學習中,我將探索更多進階的 Python 主題,如異步編程、數據庫操作和網頁開發。


上一篇
Day 2: Python 實作與應用練習
下一篇
Day 4: 條件語句、迴圈結構、列表與元組
系列文
Python探索之旅:從基礎到實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言