تابع main در پایتون: درک __name__ == __main__

تابع main در پایتون چیست؟

تابع اصلی یا main پایتون نقطه شروع هر برنامه می‌باشد. وقتی برنامه اجرا می‌شود، مفسر پایتون (python interpreter) کد را به صورت ترتیبی اجرا می‌کند. تابع اصلی تنها به هنگام اجرای فایل به صورت یک برنامه پایتون، اجرا می‌شود. اما این تابع هنگام اجرای فایل به عنوان یک ماژول اجرا نمی‌شود. برای درک این موضوع، کد زیر را درنظر بگیرید:

def main():
     print ("hello world!")
print ("Guru99")

تابع اصلی در پایتون: درک تابع main

در اینجا، دو بخش print داریم، اولی درون تابع main تعریف شده وعبارت Hello World را چاپ می‌کند و دیگری مستقل بوده و عبارت Guru99 را چاپ می‌کند. وقتی که تابع ()def main اجرا می‌شود:

  • تنها عبارت Guru99 چاپ می‌شود.
  • و عبارت Hello World چاپ نمی‌شود.

به این دلیل که ما عبارت فراخوانی تابع “if__name__== “__main__” را اعلان نکرده ایم.

مهم است که پس از تعریف تابع main، بدنه را با عبارت “if__name__== “__main__ فراخوانی کرده و سپس کد را اجرا کنیم، تنها در این صورت است که عبارت hello wolrd در خروجی کنسول ظاهر می‌شود. کد زیر را درنظر بگیرید:

def main():
    print("hello world!")

if __name__ == "__main__":
    main()

print("Guru99")

در این حالت Guru99 چاپ می‌شود.

تابع اصلی در پایتون: درک تابع main

توضیح کد در زیر آمده است.

  • وقتی که مفسر پایتون فایل سورس را می‌خواند، تمام کد موجود در آن را اجرا می‌کند.
  • وقتی که پایتون فایل سورس را به عنوان برنامه main اجرا می‌کند، متغیر ویژه (__name__) را با مقدار (“__main__”) ست می‌کند.
  • وقتی که تابع اصلی را اجرا می‌کنید، آنگاه دستور «if» خوانده شده و بررسی می‌شود که آیا متغیر __name__ برابر __main__ است یا نه.
  • در پایتون عبارت “if__name__==”__main__” به شما اجازه می‌دهد که فایل را به صورت یک ماژول قابل استفاده مجدد یا یک برنامه منفرد اجرا کنید.
مطلب پیشنهادی:  متغیرها در پایتون: اعلان، الحاق، سراسری و محلی

متغیر __name__ و ماژول پایتون

برای درک اهمیت متغیر __name__، کد زیر را ملاحظه کنید:

def main():
    print("hello world!")

if __name__ == "__main__":
    main()

print("Guru99")

print("Value in built variable name is:  ",__name__)

تابع اصلی در پایتون: درک تابع main

حال کد را به صورت یک ماژول واردشده (imported module) درنظر بگیرید.

import MainFunction

print("done")

تابع اصلی در پایتون: درک تابع main

همانند زبان C، پایتون از «==» برای مقایسه استفاده می‌کند و از «=» برای تخصیص عبارت بهره می‌گیرد. مفسر پایتون از تابع main به دو صورت استفاده می‌کند.

اجرای مستقیم

  • __name__=__main__
  • اگر دستور برابر True شود، آنگاه اسکریپت موجود در __main__ اجرا خواهد شد.

وارد شده به صورت یک ماژول

  • نام ماژول= __name__
  • اگر دستور برابر false باشد، آنگاه عبارت موجود در __main__ اجرا نخواهد شد.

وقتی که کد اجرا می‌شود، نام ماژول با دستور if بررسی می‌شود. این سازوکار اطمینان حاصل می‌کند که تابع main تنها در حالت اجرای مستقیم اجرا می‌شود و در حالت واردشده به صورت ماژول اجرا نخواهد شد.

مثال‌های بالا کدهای پایتون 3 هستند، اگر بخواهید پایتون 2 را بکار ببرید، باید از کد زیر استفاده کنید.

def main():
  print "Hello World!"
  
if __name__== "__main__":
  main()

print "Guru99"

در پایتون 3، نیازی به استفاده از if __name ندارید. کد زیر نیز به درستی عمل خواهد کرد.

def main():
  print("Hello World!")
  
main()
print("Guru99")

نکته: مطمئن شوید که پس از تعریف تابع main، مقداری تورفتگی (indent) قرار دهید و کد را درست زیر ()def main قرار نمی‌دهید. در غیر این صورت، با پیغام خطا مواجه می‌شوید.

مطلب پیشنهادی:  عملگرها در پایتون: عملگرهای حسابی، منطقی، مقایسه ای

منبع: ترجمه از سایت guru99.com

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

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

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

یک دیدگاه

  1. منصور نادری نیا

    اموزش خیلی خوبی بود برای ورود به زبان برنامه نویسی پایتون. فکر می کنم محبوب ترین زبان برنامه نویسی باشه. سپاس از لطفتون.