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