'if __name__ == "__main__":' Kodu Nedir?

Uzun zaman sonra tekrardan merhaba.

if __name__ == "__main__":
   print("Program açıldı.")

Bu kodu biraz denedim ve amacının program açıldığında yapılacak işlemleri belirtmesi olduğunu anladım. Fakat aklıma birkaç şey takıldı.

  1. Neden if ile __name__ == "__main__" gibi bir sorgulama işlemi yapıyoruz? Bu kodun mantığı nedir?

  2. Neden __name__'in sorgulama karşılığına __main__ yazdık? __main__ tam olarak ne ifade ediyor ve neden sorgulamayı bunla yapıyoruz?

  1. Bu kodun amacı program açıldığında işlemler yapmak mı? Doğru mu anlamışım?

Vereceğiniz değerli bilgiler için şimdiden teşekkür ederim.

Ipucu: Birbirini yukleyen iki dosya ile, biraz daha dene.

https://docs.python.org/3/library/__main__.html

Hocam link vermişsiniz ama ben zaten o linki inceledim ve bir şey anlamadım. Anlamadığım için konu açtım buraya.

Python da yazdığımız ana program __main__ adını alıyor, import ile programa yüklediğimiz diğer kodlar ise kendi adlarını alıyor.

deneme.py:

print("Burası her zaman çalışıyor")

if __name__ == "__main__":
    print("Benim adım __main__")

deneme2.py:

import deneme

# bir şeyler yap

Eğer deneme.py dosyasını çalıştırırsak deneme.py ın __name__ değeri __main__ olacaktır. Ancak import deneme dediğimizde deneme yi bir modül olarak çalıştırıyoruz ve __name__ değeri deneme oluyor. Yani deneme.py ı modül olarak çağırırsak
if __name__ == "__main__": in içerisindeki kodlar çalışmayacak.

2 Beğeni

Kodu okuyan kişiye kodları nereden okumaya başlayabileceği hakkında tavsiye verebiliyor. Örneğin

class SampleClass1: pass 
class SampleClass2: pass 
class SampleClass3: pass
def foo1(): pass 
def foo2(): pass 
def foo3(): pass 
variable1 = "sth"
variable2 = "sth"
variable3 = "sth"

if __name__ == "__main__":
   # I process the entire stuff above here so this part 
   # would be the beginning point to read the code 
   # for you because here is 
   # relatively more important generally
   # for a one who reads the code.

Ayrıca bu kodların main.py’da yazılı olduğunu varsayın, main.py’ı başka bir py dosyasında import edip kullanmaya çalışırsanız bu bloğun altındaki kodlar çalışmayacaktır, sebebinden bahsetmeyeceğim çünkü bu zaten her yerde sittin kere yazılmış.

__name__'in "__main__" olması durumu şunu ifade ediyor: Sen bu py dosyasını başka bir py dosyasında import etmemişsin, paşalar gibi bam güm direkt çalıştırmışsın, main’desin yani, which means main file, source file; rather than another file.

Pek sayılmaz, dediğim gibi. İşlevsel düşünmenize gerek yok, genellikle işlevinden dolayı değil bir standart haline geldiğinden kullanılıyor zaten.

2 Beğeni