อัปเดตล่าสุด Feb. 3, 2024
จริง ๆ แล้ว Module ก็คือ Python File ส่วน Package ก็คือ Folder ที่เก็บโมดูลนั่นเอง โดยแพ็คเกจนั้นจะมีไฟล์ __init__.py
กำหนดไว้ในโฟลเดอร์นั้น ๆ เพื่อบ่งบอกว่าโฟลเดอร์นี้คือ Package นั่นเอง โดยการเข้าถึง module และ package ก็จะขึ้นอยู่กับลำดับชั้นไฟล์และแพ็คเกจนั้น ๆ (File and Package Hierarchy) ขอยกตัวอย่างดังภาพด้านล่าง
และด้านล่างคือการจัดวางไฟล์และการอิมพอร์ตในรูปแบบต่าง ๆ ตามระดับของโมดูลและแพ็คเกจที่ถูกจัดวางไว้ในโปรเจคท์
การจัดวาง Package และ Module
"ในบทความนี้จะไม่ได้อธิบาย Module และ Package แบบละเอียดยิบ โดยจะแยกเป็นบทความในเรื่องนี้แบบเฉพาะและจะเขียนในบทความต่อ ๆ ไป แต่ก็เชื่อว่าในบทความนี้ หลาย ๆ คนคงจะเข้าใจเกี่ยวกับโมดูลและแพ็คเกจได้เป็นอย่างดีและมองภาพรวมกันออกในเบื้องต้นกันครับ"
ลองมาทดสอบเขียนโค้ดอีกสักหน่อยเพื่อทำความเข้าใจเพิ่มเติม
tutorial1.py
#tutorial.pyprint("Hello, this is a Python tutorial from STACKPYTHON")
ซึ่งจากโค้ดด้านบนนั้นมีการตั้งชื่อไฟล์ว่า tutorial1.py
และก็ไม่ได้มีคำสั่งอะไรมากมาย แสดงผลเพียงแค่คำสั่ง print("Hello, this is a Python tutorial from STACKPYTHON") ซึ่งเจ้าไฟล์นี้แหละก็คือโมดูลอย่างสมบูรณ์แบบด้วยตัวมันเอง ถึงตรงนี้หลายคนเริ่มพอจะมองภาพออกแล้ว ดังนั้นขอเสริมให้ชัดขึ้นไปอีก
ทำการสร้างไฟล์ขึ้นมาอีกหนึ่งไฟล์ที่มีชื่อว่า tutorial2.py
import tutorial1print("Hello, This is the second Python file, tutorial2")
จากโค้ดด้านบนในไฟล์ tutorial2.py
นั้นจะสามารถเรียกได้ว่า ได้ทำการอิมพอร์ตโมดูล tutorial1
มาใช้งาน ซึ่งการเรียกโมดูลนี้จะไม่ได้เรียก .py
ซึ่งเป็นนามสกุลของไฟล์เข้าเกี่ยวข้องแล้ว และเมื่อรันโค้ดจะได้ผลลัพธ์ดังนี้
Output
Hello, this is a Python tutorial from STACKPYTHONHello, This is the second Python file, tutorial2
ซึ่ง Hello ในบรรทัดแรกจะเป็นผลลัพธ์มาจากคำสั่ง print("Hello, this is a Python tutorial from STACKPYTHON") ในโมดูล tutorial1 ซึ่งจะถูกรันก่อน เพราะได้ถูกอิมพอร์ตเข้ามาในส่วนบนสุดของไฟล์ tutorial2.py
ซึ่งแน่นอนว่าโดยปกติแล้วโค้ดนั้นจะทำงานตามลำดับ จากซ้ายไปขวาและบนลงมาล่างเสมอ
__init__.py
คือไฟล์เปล่า ๆ ที่บ่งบอกว่าโฟลเดอร์นี้คือ Packagetutorial1.py
, tutorial2.py
.py
ออกเหลือแค่ชื่อ ก็จะได้เป็นโมดูลชื่อว่า tutorial1
และ tutorial2