Nattawut Phetmak
Jack of all Trades
ในงานขนาดเล็กๆ เราอาจมี module เพียง script.py
แค่ไฟล์เดียว แต่ถ้า project มีขนาดใหญ่ขึ้น เราอาจจำเป็นต้องแยกมันออกเป็นหลายๆ ไฟล์
ตัวอย่างโครงสร้าง directory module ของ Python เป็นดังนี้ครับ
main/
__init__.py
logic.py
parse.py
...
โดยที่ไฟล์ __init__.py
เป็นไฟล์สำหรับบอก Python ว่า directory main เป็น module ตัวหนึ่ง แต่ Python ก็ยังไม่รู้ว่าใน directory main มีอะไรบ้างอยู่ดี ดังนั้น ภายในไฟล์ __init__.py
ต้องประกาศ import
ดังนี้
# file: main/__init__.py
import main.logic
import main.parse
# import ...
สังเกตว่า ตอนสั่ง import
อย่าลืมชื่อ directory module นำหน้าไฟล์ด้วย และสมมติว่าถ้าต้องการเรียก function test ที่อยู่ในไฟล์ logic ใน interactive shell สามารถทำได้ดังนี้
import main
main.logic.test()
# call test function
ลองมาดูอีกซักตัวอย่าง
h2g2/
__init__.py
deep/
__init__.py
through.py
ต้องเขียนไฟล์ __init__.py
แต่ละอันดังนี้
# file: h2g2/__init__.py
import h2g2.deep
และ
# file: h2g2/deep/__init__.py
import h2g2.deep.through
หมายเหตุว่า ที่ไฟล์ __init__.py
ไม่จำเป็นต้องมีแค่ import
เท่านั้น เราอาจแทรก code ลงไปด้วยก็ได้ เช่น
# file: sample/__init__.py
'''Sample module
This is docs for Sample module. Include test.py file.'''
import sample.test
sample.test.new = "new string variable"
sample.test.fun = lambda x: x**2
print("import successful")