if __name__=="__main__": nedir ?
python3 kodlamaya başlarken en hızlı öğrenme yolu başkalarının kodlarını inceleyerek programlama mantığını ve dilin yapısını kavramaya çalışmaktırgithub/gitlab da gezinirken kesinlikle şu yapıyı görmüşsünüzdür
if __name__=="__main__": fonksiyonlar()
peki ne işe yarıyor bu if __name__=="__main__": yapısı hemen açıklık getirelim
muhtemelen if deyimini biliyorsunuzdur bilmiyorsanız korkmayın hemen basitçe açıklayayım
if türkçeye "eğer" olarak çeviriliyor yukardaki ifade de eğer __name__ main'e eşit ise aşağıdaki işlemleri yap demek oluyor peki nedir bu __name__ değeri hemen onu da söyliyelim her dosyanın bir __name__ değeri dosyamızın adını temsil eder eğer dosya python dosya_adi.py şeklinde çalıştırılırsa bu değer __main__ olur farklı bir dosya içerisinde modül olarak dahil edilirse kendi adını alır olay tamamen bundan ibaret nerede işimize yarayacağını düşünüyorsanız hemen ona da açıklık getirelim ilerleyen zamanlarda python dilini kullanarak geniş projeler geliştirdiğinizde kodlarınızı daha okunaklı ve kontrollü olması adına modüllere böleceksiniz bu proje yönetimini kolaylaştırır
bir dosyayı hem modül hem main dosya olarak kullanmak isterseniz işler karışır işte tam da burda imdadınıza if __name__=="__main__": yetişecek bu tek satırlık blok ile dosyanız direk çalıştırılırsa ne yapacağını modül olarak çalıştırılırsa ne yapacağını belirleyebileceksiniz
hadi biraz pratiğe geçelim
iki dosya açıp isimlendirelim ben kekik ve ixakblt isimlerini kullandım denemek için siz de deneyebilirsiniz istediğiniz isimlerle bu konuda özgürsünüz
def test(): print("dosyanın '__name__' değeri : ",__name__,"dir.") if __name__=="__main__": test()
import kekik kekik.test()
şimdi terminali açıp test edelim öncelikle kekik.py dosyamızı çalıştıralım
ixakblt.py dosyasında neden kekik.test() merak ediyorsanız python da modüllerden çağırılan fonksiyon ve metodlar araya "." konularak çağırılır
örnekte de gördüğünüz gibi kekik dosyası direk çalıştırıldığında if bloğunun içine girerek __main__ değerini ekrana bastırmakta
şimdi ixakblt dosyasını test edelim
dosyamızı modül olarak dahil edip çalıştırdığımızda __name__ değerini kekik olarak görüyoruz