跳到主要內容

文章

目前顯示的是 一月, 2020的文章

解析Python模組(Module)和套件(Package)的概念

Photo by Helloquence on Unsplash 當我們在開發大型應用程式時,如果沒有適當的組織程式碼,除了會降低開發的效率外,也不易於維護,所以模組 (Module) 化就顯得相當的重要,讓程式碼能夠透過引用的方式來重複使用,提升重用性 (Reusable) 。 但是隨著專案模組 (Module) 的增加,將難以管理及問題的追蹤,這時候就能將模組 (Module) 打包成套件 (Package) ,利用其階層式的結構來彈性規劃模組 (Module) 。 本篇文章就帶大家瞭解 Python 模組 (Module) 及套件 (Package) 的重要觀念,包含: 什麼是模組 (Module) 模組引用方式 (Import) 什麼是套件 (Package) dir() 函式 (dir function) 將模組當作腳本來執行 (Executing a Module as a Script) 一、什麼是模組 (Module) 模組 (Module) 就是一個檔案,包含了相關性較高的程式碼。隨著應用程式的開發規模越來越大,我們不可能把所有的程式碼都寫在同一份 Python 檔案中,一定會將關聯性較高的程式碼抽出來放在不同的檔案中來形成模組 (Module) ,主程式再透過引用的方式來使用。所以模組 (Module) 可以提高程式碼的重用性 (Reusable) 且易於維護。 假設我們現在要開發一個部落格,主程式為 app.py ,在還沒有模組化時,程式碼可能長得像這樣: #取得作者 def get_author(): return "Mike" #取得電子郵件 def get_email(): return "learncodewithmike@gmail.com" #新增文章 def add_post(title): pass #刪除文章 def delete_post(title): pass add_post() author = get_author() email = get_email() 各位應該可以想像,隨著部落格功能的增加,將所有程式碼都寫在  app.py 主程式中會變得怎麼樣。所以這

[Python教學]Python Comprehension語法應用教學

Photo by Jason Strull on Unsplash 相信在學 Python 程式語言的朋友都知道, Python 語法簡單易學且非常簡潔,今天要來介紹的 Comprehension 即是 Python 的 Pythonic 語法之一 ,可以運用在任何可疊代的物件 (Iterable Object) 上,只要一行程式碼即可完成多行的任務,讓我們的程式碼簡潔及增加可讀性。 透過今天的教學,您將可以學到 Python Comprehension 如何應用在以下幾個重要的物件 (Object) 上,並且有能力將現有程式碼改寫為 Python Comprehension 語法。 List Comprehension Set & Dictionary Comprehension Generator Expression 一、 List Comprehension 串列 (List)Comprehension 的語法包含三個部分,說明如下: [expression for item in iterable] expression :可以是 item 或運算式。 item :接收可疊代的物件 (Iterable Object) 元素。 iterable :可疊代的物件 (Iterable Object)。 通常要建立一個串列 (List) ,我們可以透過 for迴圈 的方式,如下範例: numbers = [] for x in range(10): numbers.append(x * 3) print(numbers) 執行結果 如果透過串列 (List)Comprehension 來進行改寫的話,只需要一行即可達到相同的執行結果,如下範例: numbers = [x * 3 for x in range(10)] print(numbers) x * 3 就是串列(List)Comprehension中的運算式( expression ),而 x 是接收可疊代的物件 (Iterable Object) 變數 ,最後就是可疊代的物件(Iterable Object)  range(10) 。 透過 for 迴圈的方式讀取元素值,並且乘以 3 來建立串列 (Lis

[Python物件導向]Python封裝(Encapsulation)實用教學

Photo by Dayne Topkin on Unsplash 今天要來介紹Python物件導向設計中的 封裝 (Encapsulation) 概念, 主要的目的在保護程式碼中重要的實作細節不被外部知道,以防止外部程式碼直接或不當的存取類別中的屬性 (Attribute) 及方法 (Method) ,而導致程式邏輯上的錯誤。 將複雜的運算邏輯進行封裝 (Encapsulation) 的好處是,外部程式碼只要透過統一介面來進行存取即可,而無需瞭解其中的運算過程,讓程式碼除了保有存取上的控制外,也易於維護。 今天要來說明的 封裝 (Encapsulation) 重點包含了: Python 封裝 (Encapsulation) 私有屬性 (Private Attribute) 私有方法 (Private Method) 一、 Python 封裝 (Encapsulation) 就如同文章開頭所說明的,封裝 (Encapsulation) 的概念就有點像權限控制,有些屬性 (Attribute) 或方法 (Method) 只想於類別內部使用,而不想公開於外部,除了減少程式碼因來源端不適當的使用發生問題外,也可保護其中重要的商業邏輯。 一般情況下,來源端皆可存取類別中公開的屬性 (Attribute) 及方法 (Method) ,如下範例: # 部落格類別 class Blog: # 建構式 def __init__(self): self.author = "Mike" # 作者屬性 self.titles = [] # 文章標題屬性 # 新增文章 def add_post(self, title): self.titles.append(title) blog = Blog() blog.add_post("Python Programming") blog.add_post("Learn How to Code") print("Author: ", blog.author) print("Blog Titles: ", blo

[Python物件導向]Python多型(Polymorphism)實用教學

Photo by Plush Design Studio on Unsplash 今天要來介紹的 Python 多型 (Polymorphism) 在物件導向設計中非常的重要,不論是設計模式 (Design Patterns) 或設計原則 (Design Principles) ,都會有 多型 (Polymorphism) 的概念。 使用多型 (Polymorphism) 來設計類別架構,能夠讓程式碼的相依性不會那麼高,並且透過 統一的介面來彈性 擴充功能。今天主要的重點有兩個部分: Python 抽象方法 (Abstract Method) 多型 (Polymorphism) 一、 Python 抽象方法 (Abstract Method) 要使用抽像方法 (Abstract Method) 的類別首先要繼承 ABC(Abstract Base Class) 類別,接著在抽象方法上方加上 @abstractmethod 裝飾詞 (Decorator) ,並且不會有實作內容 ,如下範例: from abc import ABC, abstractmethod # 登入類別 class Login(ABC): @abstractmethod def login(self): pass 由於抽象方法 (Abstract Method) 是抽象的,所以只要有抽象方法 (Abstract Method) 的類別就稱為抽象類別,是無法建立物件的,如下範例: from abc import ABC, abstractmethod # 登入類別 class Login(ABC): @abstractmethod def login(self): pass user_login = Login() 執行結果 錯誤訊息顯示無法實體化含有抽象方法 (Abstract Method) 的抽象類別。必須 透過繼承 (Inheritance) 的類別來進行抽象方法 (Abstract Method) 的實作,如下範例: from abc import ABC, abstractmethod # 登入抽象類別 class Login(ABC):

[Python物件導向]Python繼承(Inheritance)實用教學

Photo by David Travis on Unsplash 今天要來介紹的 Python 繼承 (Inheritance) 在物件導向設計中非常的重要,使用得當可以提高我們程式碼的重用性 (Reusable) 及維護性。 繼承 (Inheritance) 顧名思義,就是會有父類別(或稱基底類別 Base Class) 及子類別 (Sub Class) 的階層關係。子類別會擁有父類別公開的屬性 (Attribute) 及方法 (Method) 。 所以 Python 繼承 (Inheritance) 的概念就是 將各類別 (Class) 會共同使用的屬性 (Attribute) 或方法 (Method) 放在一個獨立的類別 (Class) 中,其它的類別 (Class)透過 繼承 (Inheritance) 的方式來擁有,降低程式碼的重複性。 Python 繼承 (Inheritance) 的重要觀念如下: 如何使用 Python 繼承 (Inheritance) 方法覆寫 (Method Overriding) 多層繼承 (Multi-Level Inheritance) 多重繼承 (Multiple Inheritance) 一、如何使用Python繼承 (Inheritance) 在實務上開發應用程式時,隨著類別 (Class) 的增加,可能會發現有些類別 (Class) 擁有共同的 屬性 (Attribute) 或 方法 (Method) ,如下範例: # 汽車類別 class Car: # 駕駛方法 def drive(self): print("drive method is called.") # 加速方法 def accelerate(self): print("accelerate method is called.") # 飛機類別 class Airplane: # 駕駛方法 def drive(self): print("drive method is called.") # 飛行方法 def