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.
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.