ฉันใหม่กับ Python ดังนั้นนี่อาจเป็นคำถามที่ง่าย รหัสต่อไปนี้ในไฟล์ Python (โมดูล) ทำให้ฉันสับสนเล็กน้อย:
if __name__ == '__main__':
x = 1
print x
ในภาษาอื่น ๆ ที่ฉันเคยทำงานรหัสนี้จะทำให้เกิดข้อยกเว้นเนื่องจากx
ตัวแปรอยู่ในif
คำสั่งและไม่ควรอยู่นอก แต่รหัสนี้ทำงานและพิมพ์ 1. ทุกคนสามารถอธิบายพฤติกรรมนี้ได้หรือไม่? ตัวแปรทั้งหมดถูกสร้างในโมดูลโกลบอล / มีให้สำหรับโมดูลทั้งหมดหรือไม่?
if
คำสั่งดังกล่าวไม่ถือเป็นจริง (เช่น__name__
เป็นไม่ได้'__main__'
ตัวอย่างเช่นเมื่อคุณนำเข้าโมดูลแทนการรันมันระดับบนสุด) แล้วx
จะไม่ได้รับการผูกไว้และต่อมาprint x
คำสั่งNameError: name 'x' is not defined
จะโยน