if __name__ == "__main__"
Nedir? Neden kullanmalıyız?Python’da diğer C benzeri diller gibi bir main
fonksiyonu/entry-point yok. Eğer böyle bir şey yapmak istersek __name__
değişkenini kullanırız. __name__
değişkeni Python tarafından atanan özel bir değişkendir. Bazen bir Python scriptini aynı zamanda modül olarak kullanmak isteyebilirsiniz. Bu durumda şöyle bir sıkıntıyla karşılaşırsınız. Python scriptini modül olarak import ettiğinizde içindeki kod çalıştırılır ve bu durum istemediğiniz değişkenlerle, çıktılarla sonuçlanabilir. Bu gibi durumlarda __name__
değişkenini kullanmanız gerekir. __name__
değişkeni import edildiyse modül adını verir.
Örneğin:
deneme.py:
print(__name__)
>>> import deneme
deneme
>>>
ama eğer deneme.py yi direkt olarak çalıştırırsak:
$ python deneme.py
__main__
Bu durumda şöyle bir şey yapabiliriz.
if __name__ == "__main__":
print("main")
Şimdi eğer bu dosyayı import edersek hiçbir kod çalışmayacaktır ama direkt olarak bu dosyayı çalıştırısak print("main")
satırı çalışacaktır. Kodlarda bunu kullanırken benim önerim şu şekilde yapmaktır.
def main():
...
if __name__ == "__main__":
main()
Kısaca if __name__ == "__main__"
altına yazdığınız kodlar sadece scripti direkt çalıştırdığınızda çalışır.
İleri okuma: Real Python - What Does if name == “main” Do in Python?