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