跳到主要內容

文章

目前顯示的是 一月, 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 主程式中會變得怎麼樣。所以這時候就可以將相關性較高的功能進行模組化的動作。
以此範例來說,取得作者及電子郵件可以獨立出來建立一個關於模組(about.py),而新增及刪除文章則可以獨立出來為文章模…

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

Photo by Jason Strull on Unsplash 相信在學Python程式語言的朋友都知道,Python語法簡單易學且非常簡潔,今天要來介紹的Comprehension即是Python的Pythonic語法之一,可以運用在任何可疊代的物件(Iterable Object)上,只要一行程式碼即可完成多行的任務,讓我們的程式碼簡潔及增加可讀性。

透過今天的教學,您將可以學到Python Comprehension如何應用在以下幾個重要的物件(Object)上,並且有能力將現有程式碼改寫為Python Comprehension語法。 List ComprehensionSet & Dictionary ComprehensionGenerator 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來建立串列(List),語法是不是非常簡潔~
如果我們要在串列(List)Comprehension中利用條件判斷來篩選元素時,則可以使用下列語法: [expression for item in iterable (…

[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: ", blog.titles)執行結果
如果我們要防止來源端存取作者屬性(Attribute)及呼叫新增文章標題方法(Method),則需透過…

[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): @abstractmethod def login(self): pass # Facebook登入機制 class FacebookLog…

[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 fly(self): print("fly method is called.")範例中的Car及Airplane類別(Class)皆擁有drive()方…