از بجگی به فوتبال و اینترنت گردی علاقه داشتم و به تازگی روی به برنامه نویسی آوردم. خوشحال میشم دنبالم کنید...
if __name__ = '__main__': در پایتون یعنی چی؟

سلام دوستان
من در حال یادگیری پایتون هستم و تو همین آموزش ها که می دیدم، به یک خط کد برخوردم که برام عجیب بود و هیچی ازش نمی فهمیدم; چون من جاوا اسکریپت تقریبا بلدم و تو جاوا اسکریپت همچین چیزی ندیده بودم و مدرس دوره هم هیچ توضیحی در موردش نداد.
رفتم دنبالش و سرچ کردم و فهمیدم قضیه از چه قراره ... گفتم بیام و با زبون خیلی ساده، این موضوع رو بیان کنم.
اصلا __name__ چیست؟
پایتون یک سری متد و متغیر از پیش تعریف شده داره که یک سری کارهای خاص انجام میدن و فقط شما باید این متدها رو بشناسید تا ازش استفاده کنید. یکی از این متدها که باید بشناسید __name__ هستش که الان بررسیش می کنیم، در انتهای این مقاله، میفهمید که چی هستش و چی کار میکنه.
اول از همه باید تلفظ اسمش رو بدونید: تو پایتون به متغیرها و متدهای آماده (built-in) که با دو تا علامت _ _ (آندر اسکور یا آندرلاین خودمون) شروع و تموم میشه، میگن داندر (Dunder); پس تلفظش میشه داندر name.
داندر name چی کار میکنه؟
پایتون بر خلاف زبان های برنامه نویسی دیگه مثل جاوا اسکریپت و سی شارپ و... به طور خودکار دنبال یک تابع خاص برای شروع و اجرای کد نمی گرده.
اینم قبلش اضافه کنم که پایتون، دو نوع اجرای کد داره:
- اجرای اسکریپتی
- اجرای ماژولی
فرض کنید یک برنامه ای نوشتید که ۵ تا فایل داره. مثلا یکی از این فایل ها رو داخل یک فایل دیگه import می کنید، به import کردن و استفاده از اون فایل در فایل دیگه، اجرای ماژولی میگن ولی اینکه هر فایل رو به طور مستقل run کنید، اجرای اسکریپتی میگن.
هدف از استفاده از __name__ هم دقیقا همینه که بفهمه شما کدتون رو دارین اسکریپتی Run می کنید یا ماژولی؟
به کد زیر توجه کنید:
123# First File With Name programming.py print(__name__) # Run the Code and In Output, You See __main__
12345# Another File With Name status.py import programming # If you run this code, you see the output is "programming"
نکته ای که باید توجه کنید، اینجاست که اگر کدتون رو به صورت اسکریپتی اجرا کنید، __name__ برابر با __main__ هستش ولی اگه ماژولی اجرا کنید، __name__ برابر با اسم فایل میشه.
خب حالا تا اینجا ما فهمیدیم کار __name__ چیه ... یه ذره قضیه رو پیچیده تر کنیم. شاید شما بخواید تعیین کنید که اگه برنامه تون به صورت اسکریپتی اجرا شد، یک خروجی چاپ کنه و اگه به صورت ماژولی اجرا شد، یک خروجی دیگه.
راهکار برای این مثالی که زدم، تیتر مقاله ای هستش که نوشتم. شما باید داخل فایل programming.py شرط بگذارید:
1if __name__ = '__main__':
1 print(" I'm Programmer ")
1else:
1 print(" I'm Football Player ")
تو برنامه های بزرگتر، شاید شما بخواین تعیین کنید که اگر برنامه به صورت ماژولی اجرا شد، یک سری از فانکشن هایی که نوشتید، اجرا نشه و بسیار کاربردی خواهد بود.
مطلبی دیگر از این انتشارات
آموزش ثبت نام تصویری لاتاری آمریکا 2024 - رایگان
مطلبی دیگر از این انتشارات
چرا Node.js با single-thread بودنش بازم سریعه !
مطلبی دیگر از این انتشارات
سیر تا پیاز کتابخوانهای اونیکس (Onyx E-reader)