If __name__ == "__main__": nedir?

Soruda da net olduğu gibi python kodlarında sıkça gördüğüm bu kullanım nedir? Neden kullanılır? Bilgilendirirseniz sevinirim, teşekkürler…

name ifadesi bize normalde modülümüzün ismini verir. Örneğin:

>>> import os
>>> os.__name__

'os'

Yalnız, bu ifade modül başka bir betikte içe aktarılmışsa size kendi adını verecektir. Yukarıdaki örnekte olduğu gibi. Eğer modülü doğrudan çalıştırırsanız __name __ artık __main __ olacaktır. Çünkü çalıştırılan betiğin kendisidir (başka bir deyişle ana (main) betik).

İşte siz betiğinizin sonuna bu ifadeyi koyduğunuzda betiğininiz:

  • eğer doğrudan çalıştırılmışsa __name __ , __main __ ismini alacak ve
if __name__ == "__main__":

bloğu devreye girecektir.

  • eğer içe aktarılmışsa bu blok çalıştırılmayacak ve __name __, sizin betiğe verdiğiniz isim olarak geçecektir.

Şu komutları bir .py dosyasına kaydedin:

if __name__ == "__main__":
    print("Eğer doğrudan çalıştırılmışsam beni görürsünüz.")
    print(__name__)

else:
    print("Beni yalnızca içe aktardığınızda görebilirsiniz.")
    print(__name__)

Ben TEST.py olarak seçtim dosyamın adını. Siz istediğinizi seçebilirsiniz. Bu dosyayı doğrudan çalıştırırsanız if bloğu devreye girecek ve şöyle bir çıktı elde edeceksiniz:

Eğer doğrudan çalıştırılmışsam beni görürsünüz.
__main__

İkinci print komutumuzun __name __ ifadesini yazdırması gerektiğine dikkat edin. Öte yandan aynı dosyayı komut satırındaki bir python konsolunda içe aktarmayı deneyin. Şöyle bir çıktı elde edeceksiniz:

Beni yalnızca içe aktardığınızda görebilirsiniz.
TEST
2 Beğeni

http://bsekili.com/if-name-main-yapisi-python/
Bu yazıyı inceleyebilirsiniz.

1 Beğeni