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

if __name__ ==__main__:ทำอะไรใน Python


เมื่อล่าม Python อ่านไฟล์ต้นฉบับ โปรแกรมจะดำเนินการโค้ดทั้งหมดที่พบในไฟล์นั้น

ก่อนที่จะรันโค้ด มันจะกำหนดตัวแปรพิเศษสองสามตัว ตัวอย่างเช่น หากล่ามไพธอนกำลังเรียกใช้โมดูลนั้น (ไฟล์ต้นทาง) เป็นโปรแกรมหลัก โปรแกรมจะตั้งค่าตัวแปร __name__ พิเศษให้มีค่า "__main__" หากไฟล์นี้ถูกนำเข้าจากโมดูลอื่น __name__ จะถูกตั้งค่าเป็นชื่อของโมดูล

เหตุผลหนึ่งสำหรับการทำเช่นนี้คือบางครั้งคุณเขียนโมดูล (ไฟล์ .py) ซึ่งสามารถดำเนินการได้โดยตรง นอกจากนี้ยังสามารถนำเข้าและใช้ในโมดูลอื่นได้อีกด้วย เมื่อทำการตรวจสอบหลัก คุณสามารถให้โค้ดนั้นรันได้เฉพาะเมื่อคุณต้องการเรียกใช้โมดูลในฐานะโปรแกรม และไม่รันโค้ดเมื่อมีคนต้องการนำเข้าโมดูลของคุณและเรียกใช้ฟังก์ชันของคุณเอง

ตัวอย่างเช่น หากคุณมี 2 ไฟล์ one.py และ two.py ด้วยรหัสต่อไปนี้:

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 in one.py
one.py is being imported
Root of in two.py
func() in one.py
two.py is being run directly