โมดูล (Modules) เป็นคุณสมบัติของ Python ที่ช่วยให้คุณแบ่งโค้ดของคุณเป็นหลายไฟล์ โมดูล Python คือไฟล์ที่ลงท้ายด้วยนามสกุล ".py"
ในคู่มือนี้ เราจะให้ตัวอย่างและคุณจะได้เรียนรู้วิธีสร้างโมดูล Python
Python Modules: บทนำสรุป
โมดูลเป็นคำอีกคำหนึ่งสำหรับไฟล์โปรแกรม Python นี่หมายความว่าไฟล์ใดๆ ในโปรเจกต์ Python ที่ลงท้ายด้วยนามสกุล .py สามารถถือว่าเป็นโมดูล โมดูลสามารถรวมฟังก์ชัน ตัวแปร และคลาส และยังสามารถนำเข้าไลบรารีของตัวเองได้
มี 3 ประเภทหลักของโมดูลใน Python:
- Built-in Modules (โมดูลในตัว): โมดูลเหล่านี้เป็นส่วนหนึ่งของ Python Standard Library ถูกแพ็กเกจมาพร้อมกับการติดตั้ง Python ของคุณ ตัวอย่างเช่น logging และ time
- External Modules (โมดูลภายนอก): โมดูลที่คุณติดตั้งโดยใช้ pip เครื่องมือจัดการแพ็กเกจของ Python
- User-Defined Modules (โมดูลที่ผู้ใช้กำหนด): ฟังก์ชันที่คุณกำหนดในโปรแกรม Python ของคุณ
การเขียนโมดูลช่วยให้คุณรักษาความอ่านง่ายของโค้ด แม้ว่าจะเป็นไปได้ทางเทคนิคที่จะเขียนโค้ดทั้งหมดสำหรับโปรแกรมในไฟล์เดียว แต่มันไม่ใช่ไอเดียที่ดี การรู้ว่าจะทำการเปลี่ยนแปลงที่ไหนและอย่างไรในไฟล์ที่อาจมีพันบรรทัดของโค้ดเป็นเรื่องยาก
เราแนะนำให้อ่านบทช่วยสอนของเราเกี่ยวกับคำสั่ง import ของ Python หากคุณยังไม่คุ้นเคยกับวิธีการทำงานของมันแล้ว
วิธีเขียน Python Module
ในคู่มือนี้ เราจะเขียนโปรแกรมสำหรับธนาคารที่จัดเก็บยอดคงเหลือของลูกค้า มาเริ่มกันเลย
เพื่อเริ่มต้น เราจะสร้างฟังก์ชันที่ต้อนรับผู้ใช้เข้าสู่ระบบติดตามยอดคงเหลือของธนาคาร เราจะเขียนฟังก์ชันนี้ในไฟล์ชื่อ bank.py ซึ่งจะจัดเก็บโค้ดสำหรับระบบติดตามยอดคงเหลือของธนาคารของเรา
def welcome_message():
print("Welcome to Python Bank!")
เมื่อเรารันโปรแกรมนี้ ไม่มีอะไรจะเกิดขึ้น เพราะเรายังไม่ได้เรียกฟังก์ชันของเรา เพื่อใช้โค้ดของเรา เราจะสร้างไฟล์ใหม่ชื่อ main.py นี่จะจัดเก็บโค้ดหลักสำหรับโปรแกรมของเรา:
import bank bank.welcome_message()
ในโค้ดของเรา เราได้นำเข้าโมดูล bank จากไฟล์ bank.py ของเรา เราจึงเรียกฟังก์ชัน welcome_message() ในโมดูล bank ของเรา โค้ดของเราคืนค่า:
Welcome to Python Bank!
แม้คำสั่ง print() ของเราจะอยู่ในไฟล์ bank.py การใช้คีย์เวิร์ด import เราสามารถเรียกโค้ดนั้นในโปรแกรมหลักของเราได้ นี่เป็นตัวอย่างพื้นฐานของวิธีที่คุณสามารถรันโค้ดจากไฟล์อื่นใน Python ได้ แต่มีอะไรที่คุณสามารถทำกับโมดูลได้อีกมากมาย
การใช้ Classes กับ Python Modules
สมมติว่าเราต้องการสร้างคลาสที่จัดเก็บข้อมูลของลูกค้าในธนาคารของเรา เราจะกำหนดคลาสนี้ในไฟล์ bank.py ของเรา เพื่อแยกจากโปรแกรมหลักของเรา:
def welcome_message():
print("Welcome to Python Bank!")
class Customer:
def __init__(self, name, balance):
self.name = name
self.balance = balance
def show_customer(self):
print("Name: " + self.name)
print("Balance: $" + str(self.balance))
มากลับไปที่ไฟล์ main.py ของเรา เพื่อที่เราจะใช้โค้ดนี้ เราจะเพิ่มโค้ดต่อไปนี้ซึ่งสร้างอินสแตนซ์ของคลาส Customer อินสแตนซ์นี้จะจัดเก็บชื่อและยอดคงเหลือของ Lucy ลูกค้าใหม่ของธนาคาร
ไฟล์ main.py ของเราตอนนี้มีลักษณะดังนี้:
import bank
bank.welcome_message()
lucy = bank.Customer("Lucy", 75)
lucy.show_customer()
โค้ดของเราคืนค่า:
Welcome to Python Bank!
Name: Lucy
Balance: $75
ในโค้ดของเรา เราประกาศอินสแตนซ์ของคลาส Customer ชื่อ "lucy" บัญชีของ Lucy มีชื่อ "Lucy" และยอดคงเหลือ $75
ตามที่คุณเห็น โค้ดสำหรับคลาส Customer ของเราไม่ได้จัดเก็บในโปรแกรมหลักของเรา
แทนที่จะเป็นเช่นนั้น โค้ดนี้อยู่ในไฟล์ bank.py ของเรา คำสั่ง "import" ช่วยให้เราดึงโค้ดทั้งหมดในไฟล์ bank.py เพื่อที่เราจะสามารถใช้มันในโค้ดของเราได้
วิธีนำเข้า Modules จากโฟลเดอร์อื่น
ใน Python คุณสามารถใช้โมดูลที่จัดเก็บในไดเรกทอรีที่แตกต่างกันได้
ในตัวอย่างล่าสุด ไฟล์โมดูล "bank.py" ของเราอยู่ในโฟลเดอร์เดียวกับโฟลเดอร์ "main.py" ของเรา
นี่เป็นเพราะโปรแกรมของเราสั้น ดังนั้นเราไม่มีความจำเป็นสำหรับโฟลเดอร์โมดูลแยกต่างหาก แต่ หากคุณกำลังเขียนโปรแกรมขนาดใหญ่ คุณอาจต้องการจัดเก็บโมดูลในโฟลเดอร์แยกต่างหาก
เพื่อทำเช่นนั้น คุณสามารถใช้คีย์เวิร์ด "from" นี่จะช่วยให้คุณระบุโฟลเดอร์ที่คุณต้องการนำเข้าโมดูล
สมมติว่าเรากำลังย้ายโมดูล bank.py ของเราไปยังโฟลเดอร์ชื่อ bank_details เราสามารถนำเข้าโมดูลเฉพาะในโค้ดของเราโดยการเปลี่ยนคำสั่ง import จาก "import bank" เป็น:
from bank_details import bank
นี่จะช่วยให้เรานำเข้าเนื้อหาของไฟล์ bank.py เข้าโปรแกรมของเราได้ from bank_details บอกโปรแกรมของเราว่าจะหาโมดูลที่ไหน ซึ่งมักเรียกว่า module namespace (เนมสเปซของโมดูล) ในกรณีนี้ bank_details คือ module namespace และเป็นไฟล์ที่มีโค้ด Python ที่เราใช้ในโปรแกรมของเรา
สรุป
ไม่มีความแตกต่างระหว่างการเขียนโมดูลและไฟล์ Python อื่นๆ โมดูลคือเพียงไฟล์ใน Python เมื่อใช้กับคำสั่ง "import" คุณสามารถใช้โมดูลเพื่อแบ่งโค้ดของคุณ นี่มีประโยชน์เพราะหมายความว่าคุณไม่จำเป็นต้องจัดเก็บโค้ดทั้งหมดสำหรับโปรแกรมของคุณในไฟล์เดียว คุณสามารถแยกมันเป็นหลายไฟล์และจัดหมวดหมู่โค้ดของคุณได้ตามเหมาะสม