if __name__ == “__main__” nedir?

Oğuzhan Çelikarslan
2 min readJun 28, 2024

--

Yukarıda ki ifade bir python scriptinin ana program olarak çağırıldığını yada başka bir python scriptin de modül olarak çağırılıp çağırılmadığını anlamamıza yardımcı olur.

program1.py adında bir dosya yaratıp içerisinde aşağıda ki satırı ekleyelim.

print(__name__)

daha sonrasında terminal ekranında aşağıda ki komutu çalıştıralım.

python program1.py 

Ekranımıza çıktı olarak “__main__” geldiğini göreceğiz.

Bunun sebebi biz bu programı direkt olarak çalıştırdık. Yani ana bir program olarak çalıştı.

Bir diğer örnek yapalım bu sefer program2.py adında bir dosya yaratalım. İçerisine bir adet method koyalım.

def hello_world():
print(__name__)

program1.py dosyasının içerisine gidip içerisini aşağıda ki şekilde değiştirelim.

from program2 import hello_world
hello_world()

print(__name__)

Yukarıda ki programı çalıştırdığımızda karşımıza aşağıda ki çıktı gelecektir.

program2
__main__

Öncelikle hello_world() fonksiyonu çalıştığı için ekranımıza program2 yazısı geldi. program2 scripti, program1 tarafından import edildiği için ve burada ana program olmadığı için, __name__ değeri __main__ olmadı.

Daha sonrasında ise program1'i direkt ana program olarak çalıştırdığımız için ekranımıza __main__ geldi.

Bir başka örnek yapalım. program2.py içerisine aşağıda ki kod bloğunu yapıştıralım.

def hello_world():
print(__name__)

print("bu mesaj gelmemeliydi")

Şimdi tekrardan python program1.py komutunu çalıştıralım bu sefer ise ekrana

bu mesaj gelmemeliydi
program2
__main__

çıktısı gelecektir. Biz herhangi python modülümüzün import edildiğinde print ifadesinin çalışmasını istemiyoruz ancak ve ancak modül direkt çalıştırılırsa ekrana gelsin istiyoruz diyelim.

Bu durumda program2.py içerisini aşağıda ki gibi değiştirmliydik.

def hello_world():
print(__name__)

if __name__ == '__main__':
print("bu mesaj gelmemeliydi")

Tekrardan python program1.py komutunu çalıştırırsak ekranda yalnızca;

program2
__main__

olacaktır.

Şimdi ise aşağıda ki komutu tekrardan çalıştıralım.

python program2.py

program2 içerisinde ki if ifadesinde __name__ == ‘__main__’ koşulu olduğu için ve programda direkt çalıştığı için, bu durumda ekranımızda “bu mesaj gelmemeliydi” yazısını göreceğiz.

--

--

Oğuzhan Çelikarslan
Oğuzhan Çelikarslan

Written by Oğuzhan Çelikarslan

Python enthusiast who focuses on the problem, break down it, and solves it. https://oguzhann.net

No responses yet