Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ทำไมต้องมี if __name__ == "__main__": ใน Python?

เมื่อตัวแปลภาษา Python อ่านไฟล์ต้นฉบับ (Source File) จะทำการรันโค้ดทั้งหมดที่อยู่ในไฟล์นั้น ก่อนรัน ตัวแปลจะกำหนดตัวแปรพิเศษบางตัว โดยเฉพาะ __name__

ค่าของ __name__

  • รันไฟล์โดยตรง: __name__ == "__main__"
  • ถูกนำเข้า (Import) เป็นโมดูล: __name__ จะเป็นชื่อโมดูล (เช่น "mymodule")

จุดประสงค์

รูปแบบนี้ช่วยให้โค้ดบางส่วนทำงานเฉพาะเมื่อรันไฟล์โดยตรง ไม่ทำงานเมื่อถูก import ไปใช้ในที่อื่น เหมาะสำหรับ:

  • ทดสอบโมดูล (Unit Testing)
  • รันสคริปต์บรรทัดคำสั่ง (CLI)
  • โค้ดสาธิต (Demo Code)

ตัวอย่าง

# one.py
def func():
    print("func() in one.py")

print("Root of one.py")
if __name__ == "__main__":
    print("one.py is being run directly")
else:
    print("one.py is being imported")

# two.py
import one
print("Root of two.py")
one.func()
if __name__ == "__main__":
    print("two.py is being run directly")
else:
    print("two.py is being imported")

ผลลัพธ์

$ python one.py
Root of one.py
one.py is being run directly

$ python two.py
Root of one.py
one.py is being imported
Root of two.py
func() in one.py
two.py is being run directly