منبع اصلی نوشتار زیر در این لینک قرار دارد

‘__if __name__ == ‘__main چیست؟

اگر شروع به مطالعه یک پروژه پایتونی کنید به احتمال خیلی زیاد با شکلی از سینتکس زیر در فایل های آن مواجه می‌شوید.

if __name__ == '__main__':
    do_somthing()

 

‘__if __name__ == ‘__main چیست؟

خب اگر بخواهیم مسئله را ساده کنیم باید به این سینتکس به شکل یک دستور شرطی ساده نگاه کنیم که البته همینطور هم هست.

در اینجا مقدار متغیری به نام __name__ با یک استرینگ که مقدار __name__ را دارد مقایسه می‌شود و در صورت برقرار بودن شرط دستوراتی نیز اجرا می‌شوند.

پس اگر با مقدمات پایتون آشنا باشیم و اصول آن را بدانیم متوجه می‌شویم که آن چنان هم دستور عجیبی و تازه ای نیست!

 

__name__ چیست؟

احتمالا قسمت مجهول و گنگ ماجرا این متغیر باشد که کار را سخت می‌کند.

همانطور که مشاهده می‌کنید این متغیر، پترن متغیر های مخصوص پایتون را دارد چرا که ابتدا و انتهای آن با دو آندرلاین احاطه شده است.

این متغیر توسط خود پایتون ایجاد می‌شود و بر اساس نوع اجرا کردن فایل مقدار می‌گیرد.

به این صورت که اگر مستقیما یک ماژول پایتونی را اجرا کنیم اتریبیوت __name__ آن ماژول برابر با “__main__” می‌شود و اگر از طریق ایمپورت کردن اجرا شود، نام ماژول را مقدار می‌گیرد.

 

کاربرد ‘__if __name__ == ‘__main در پایتون

پس حالا که متوجه شدیم در شرایط مختلف مقدار اتریبیوت __name__ تغییر می‌کند به راحتی می‌توانیم بر اساس آن شرط بنویسیم و تصمیم گیری کنیم.

با نوشتن این دستور چک می‌کنیم که تنها زمانی که ماژول ما به صورت مستقیم یعنی مثلا با نوشتن python test.py اجرا شد دستورات خاصی اجرا شود.