Software-Developement
September 14, 2023

if __name__=="__main__": nedir ?

Selam dostlarım

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

kekik.py dosyasına

def test():
	print("dosyanın '__name__' değeri : ",__name__,"dir.")
	
if __name__=="__main__":
	test()

kodlarını yazalım

ixakblt.py dosyasına da

import kekik

kekik.test()

kodlarını yazalım

ş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

aradaki farkı umarım anlatabilmişimdir iyi eğlenceler.