Module

ในงานขนาดเล็กๆ เราอาจมี 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")

Nattawut Phetmak

Jack of all Trades

blog comments powered by Disqus