Bu, aynı dosyayı hem kitaplık (içe aktarma yoluyla) hem de uygulama için başlangıç noktası olarak kullanmanıza olanak tanır.
# hello.py
def hello(to=__name__):
return "hello, %s" % to
if __name__ == "__main__":
print hello("world")
iki şekilde bu kodu kullanabilirsiniz:
Örneğin, aşağıdaki dosyayı düşünün. Birincisi, onu ithal eden bir program yazabilirsiniz. Eğer kütüphane alırsanız, __name__
kütüphanenin adı olacaktır ve böylece çek başarısız olur ve kod (istenen davranış budur) yürütmek olmaz:
#program.py
from hello import hello # this won't cause anything to print
print hello("world")
yazmak için istemiyorsanız
$ python hello.py
hello, __main__
tüm piton kütüphane ithal veya doğrudan çalıştırılabilir yapıp yapmadığına bağlı biçimde ayarlanır özel değişken __name__
bağlıdır Bu davranış: Bu ikinci dosya, doğrudan gibi bir şeyle komut satırından kodunuzu çalıştırabilir çevirmen. Doğrudan çalıştırılırsa __main__
olarak ayarlanır. İçe aktarılırsa, kitaplık adına ayarlanır (bu durumda, hello
).
Genellikle bu yapı, kodunuza birim testleri eklemek için kullanılır. Bu şekilde, bir kütüphane yazdığınızda kütüphaneyi normal bir şekilde kullanması durumunda icra edilmek zorunda kalmadan test kodunu doğrudan dosyaya gömebilirsiniz. Kütüphaneyi test etmek istediğinizde, herhangi bir çerçeveye ihtiyacınız yoktur, çünkü kütüphaneyi bir programmış gibi çalıştırabilirsiniz.
Ayrıca bakınız __main__
in the python documentation (o derece seyrek olsa)
Anlıyorum ... 'eğer __name __ = "__ ana __":' denetler komut bağımsız veya bir modüldür solup. – Adobe
Kopyala-yapıştırıcılar için ve/veya karışıklığı önlemek için, önceki yorumdaki yazım hatalarından haberdar olun: 'Eğer __name __ ==" __ main __ ": – alberto