if__name__== “__main__ چی هست؟

برای فهم این مطلب به کد زیر توجه کنید:

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

همانطور که بعد از اجرای کد مشاهده میکنید به جای چاپ هر دو مقدار print فقط sufra چاپ شده است. به این دلیل است که تابع if__name __ ==” __main__  را  فراخوانی نکردیم.

↵ هر ماژول در پایتون ویژگی خاصی  به نام __name__  دارد. وقتی ماژول به عنوان برنامه اصلی اجرا میشود، مقدار ویژگی __name__ در __main__  قرار میگیرد . در غیر این صورت مقدار __name__ حاوی نام ماژول است.

+ وقتی مفسر پایتون کدهای فایل را میخونه تمام کدها را پیدا و اجرا میکنه.

+ وقتی پایتون تمام کد ها را به عنوان برنامه اصلی اجرا میکنه ، متغیر خاص (__name__) را برای مقدار (“__main__”) تنظیم می کند.

+ وقتی تابع اجرا میشود با خواندن عبارت if بررسی میکنه که آیا مقدار __name__ برابر __main__ هست یا نه .
+ + در پایتون، if__name __ ==” __main__  به شما اجازه میدهد هر فایل پایتونی را به عنوان ماژول های قابل استفاده مجدد یا برنامه های مستقل اجرا کنید.

مانند C، پایتون از == برای مقایسه و از = برای تخصیص استفاده میکند. مترجم پایتون با  دو روش اصلی از تابع استفاده می کند:

 __name__= ‘نام ماژول ‘

if statement==false

کد بالا میگه اگر __name__ برابر نام ماژول بود عبارت شرطی ما مقدار false میگیره و اسکریپت داخل _main_   اجرا نمیشود.

t1

 
کد زیر میگه اگر __name__ برابر _main_ بود،  عبارت شرطی ما مقدار true میگیره و اسکریپت داخل _main_   اجرا میشود.
__name__=__main__

if statement == True

 

t2
 
 
 
 
 

مثالی دیگر

def main():

W=open(“foo.txt” ,”r”)

K=W.readlines()

for x in K:

print(x)

if __name__ == “__main__”:

main()

22


4 دیدگاه مقاله ی "if__name__== “__main__ چی هست؟"

  1. aa گفت:
    import requests
    
    if__name__ == "__main__":
          url = 'https://www.google.com.xm/'
          a = requests.get(url)
    
          if response.status_code == 200:
                conetent = response.contect
    
                file = open('google.html','wb')
                file.write(content)
                file.close()
    

    الان مشکل این چیه ؟

    • میخک گفت:

      سلام

      دوست عزیز طبق مطالبی که بالا توضیح دادم باید الگو را رعایت کنید . من یه مثال ساده میزنم انشاالله نتیجه بگیرید:
      در واقع فایل را در تابعی به نام main قرار دادم .

      def main():
      W=open(“foo.txt” ,”r”)
      K=W.readlines()
      for x in K:
      print(x)

      if __name__ == “__main__”:
      main()

  2. aa گفت:

    از این __name__ میتوان در پایتون هر دو ورژن پایتون استفاده نمود

پاسخ دادن به aa لغو پاسخ

We are glad you have chosen to leave a comment. Please keep in mind that comments are moderated according to our comment policy.