
ฟังก์ชั่นหลักของ Python คืออะไร?
ฟังก์ชันหลักของ Pythonคือจุดเริ่มต้นของโปรแกรมใดๆ เมื่อรันโปรแกรม ล่ามไพธอนจะรันโค้ดตามลำดับ ฟังก์ชันหลักจะทำงานเมื่อรันเป็นโปรแกรม Python เท่านั้น จะไม่เรียกใช้ฟังก์ชันหลักหากนำเข้าเป็นโมดูล
ฟังก์ชั่น def main () ใน Python คืออะไร? เพื่อให้เข้าใจสิ่งนี้ ให้พิจารณาโค้ดตัวอย่างต่อไปนี้
def main() ตัวอย่าง 1
def หลัก (): พิมพ์ ("สวัสดีชาวโลก!") พิมพ์ ("Guru99")
ในที่นี้ เราได้งานพิมพ์สองชิ้น โดยชุดแรกถูกกำหนดไว้ในฟังก์ชันหลักคือ "Hello World!" และอีกอันหนึ่งเป็นอิสระซึ่งก็คือ “Guru99” เมื่อคุณเรียกใช้ฟังก์ชัน def main ():
- พิมพ์ “Guru99” เท่านั้น
- และไม่ใช่รหัส “Hello World!”
เป็นเพราะเราไม่ได้ประกาศฟังก์ชันการเรียก “if__name__== “__main__”
เป็นสิ่งสำคัญที่หลังจากกำหนดฟังก์ชันหลักแล้ว คุณต้องเรียกใช้โค้ดโดย if__name__== “__main__” จากนั้นรันโค้ด จากนั้นคุณจะได้รับผลลัพธ์ “hello world!” ในคอนโซลการเขียนโปรแกรม พิจารณารหัสต่อไปนี้
def main() ตัวอย่าง 2
def หลัก (): พิมพ์ ("สวัสดีชาวโลก!") ถ้า __name__ == "__main__": หลัก() พิมพ์("Guru99")











Guru99 ถูกพิมพ์ในกรณีนี้
นี่คือคำอธิบาย
- เมื่อล่าม Python อ่านไฟล์ต้นฉบับ มันจะรันโค้ดทั้งหมดที่พบในไฟล์นั้น
- เมื่อ Python รัน “source file” เป็นโปรแกรมหลัก มันจะตั้งค่าตัวแปรพิเศษ (__name__) ให้มีค่า (“__main__”)
- เมื่อคุณรันฟังก์ชันหลักใน python มันจะอ่านคำสั่ง "if" และตรวจสอบว่า __name__ เท่ากับ __main__ หรือไม่
- ใน Python “if__name__== “__main__”อนุญาตให้คุณเรียกใช้ไฟล์ Python ในรูปแบบโมดูลที่ใช้ซ้ำได้หรือโปรแกรมแบบสแตนด์อโลน
ตัวแปร __name__ และ Python Module
เพื่อให้เข้าใจถึงความสำคัญของตัวแปร __name__ ในวิธีฟังก์ชันหลักของ Python ให้พิจารณาโค้ดต่อไปนี้:
def หลัก (): พิมพ์ ("สวัสดีชาวโลก!") ถ้า __name__ == "__main__": หลัก() พิมพ์("Guru99") พิมพ์ ("ค่าในชื่อตัวแปรที่สร้างขึ้นคือ: ",__name__)
ตอนนี้ให้พิจารณาว่าโค้ดถูกนำเข้าเป็นโมดูล
นำเข้า MainFunction พิมพ์ ("เสร็จสิ้น")
นี่คือคำอธิบายรหัส:
เช่นเดียวกับ C Python ใช้ == เพื่อเปรียบเทียบในขณะที่ = สำหรับการมอบหมาย ตัวแปล Python ใช้ฟังก์ชันหลักในสองวิธี
วิ่งตรง:
- __name__=__main__
- if statement == True และสคริปต์ใน _main_ จะถูกดำเนินการ
นำเข้าเป็นโมดูล
- __name__= ชื่อไฟล์ของโมดูล
- if statement == false และสคริปต์ใน __main__ จะไม่ถูกดำเนินการ
เมื่อรันโค้ด มันจะตรวจสอบชื่อโมดูลด้วย "if" กลไกนี้ช่วยให้แน่ใจว่า ฟังก์ชันหลักจะถูกเรียกใช้โดยตรงเท่านั้น ไม่ใช่เมื่อนำเข้าเป็นโมดูล
ตัวอย่างด้านบนคือโค้ด Python 3 หากคุณต้องการใช้ Python 2 โปรดพิจารณาโค้ดต่อไปนี้
def หลัก (): พิมพ์ "สวัสดีชาวโลก!" ถ้า __name__== "__main__": หลัก() พิมพ์ "คุรุ99"
ใน Python 3 คุณไม่จำเป็นต้องใช้ if__name รหัสต่อไปนี้ยังใช้งานได้
def หลัก (): พิมพ์ ("สวัสดีชาวโลก!") หลัก() พิมพ์("Guru99")
หมายเหตุ:ตรวจสอบให้แน่ใจว่าหลังจากกำหนดฟังก์ชั่นหลักแล้ว คุณเว้นการเยื้องไว้บางส่วนและไม่ได้ประกาศโค้ดด้านล่างฟังก์ชัน def main(): ไม่เช่นนั้นจะทำให้เกิดข้อผิดพลาดในการเยื้อง
0 ความคิดเห็น:
แสดงความคิดเห็น