logo

Python'da __isim__

Şu anda yürütülen Python betiğinin veya modülünün adı Python'un __name__ özel değişkeninde saklanır. Python 3.0, Python 2.x'te bulunmayan __name__ değişkenini tanıttı. Geçerli Python betiğinin veya modülünün değeri olan __main__, çalıştırılırken __name__ değişkenine atanır.

_name_ ne anlama geliyor?

Python'un, o anda çalışmakta olan betiğin veya modülün adını saklayan __name__ adında yerleşik bir değişkeni vardır. Komut dosyası veya modül adı, geçerli modül çalışmıyorsa __name__ değişkeninde saklanır; bu durumda ona __main__ değeri atanır.

Sonuç olarak, bir Python betiği yürütülürken, __name__ değişkeninin değeri, eğer başka bir Python betiğine aktarılmışsa her zaman __main__ olmalıdır. Değilse modülün adı görünecektir.

Örnek :

Bunu daha iyi anlamak için bir örnek kullanalım. Yapmak Python'da test.py adlı komut dosyası, ve aşağıdaki kodu buna ekleyin:

 # Code to define a function def anything(): print('Value of the __name__ : ', __name__) anything() 

Çıktı:

 Value of the __name__ : __main__ 

Açıklama:

Komut dosyası, 'Adın değeri: ana' çıktısıyla belirtildiği gibi hemen ana program olarak çalışıyor. Python'da, betiğin __name__ değişkeninin değeri, betik doğrudan çalıştırıldığında otomatik olarak '__main__' olarak ayarlanır. Bu çıktı, betiğin başka bir betiğe modül olarak aktarılması yerine doğrudan çalıştırıldığını doğrular.

bağlantılı liste java

Şimdi adında başka bir Python betiği oluşturalım. şebeke.py ve öncekini içine aktarın.

Örnek :

 # importing testing.py import testing testing.anything() 

Çıktı:

 Value of the __name__ : testing 

Açıklama:

test yapmak. thing(), test.py betiği, içe aktarma testi kullanılarak başka bir Python betiğine aktarıldığında çalıştırılan yöntemdir. Bu durumda modülün adı, bu durumda 'testing', test.py dosyasındaki '__main__' yerine __name__ değişkeninin değeri olarak ayarlanır. Bu nedenle test çıktısı alınmıştır. thing() '__name__'nin değeri: test etme'dir. Bu, betiği doğrudan çalıştırmanın ve onu bir modül olarak içe aktarmanın __name__ değişkeninin değerini nasıl etkilediğini gösterir.

if name == main koşulunun kullanılması:

biz kullanıyoruz if ifadesi ve durum __isim__ == __ana__ bunu beyan etmek belirli Python kodu sadece olmalı betik doğrudan çalıştırıldığında gerçekleştirilir .

Örnek :

 # importing testing.py import testing if __name__ == __main__: testing.anything() 

Bu durumda, geçerli modülün veya betiğin bağımsız olarak çalışabilme yeteneği, __main__ dizesi kullanılarak belirlenir. Python yorumlayıcısına __name__ değişkenindeki bir anahtar kelimenin ayrılmış veya özel olduğunu belirtmek için terimin her iki yanında iki alt çizgi bulunur.

Python'da isim için kod örneği:

Daha önce de söylediğimiz gibi, bir kod dosyasını çalıştırdığımızda kod doğrudan gerçekleştirilir, hatta başka bir dosyaya aktarılmaz ve sonuç olarak __name__ değişkeninin değeri __main__ olarak değişir.

 # defining a function def anything(): print('It is a function in the ScriptP1.') if __name__=='__main__': anything() print('Called from the ScriptP1.') else: print('ScriptP1 is imported into another file.') 

Çıktı:

 It is a function in the ScriptP1. Called from the ScriptP1. 

Açıklama:

ScriptP1 betiğinde belirtilen herhangi bir şey() işlevi, 'Bu, ScriptP1'deki bir işlevdir' çıktısında gösterildiği gibi, doğrudan ana program olarak çalıştırılmaktadır. ardından 'ScriptP1'den çağrıldı.' Betik doğrudan Python'da çalıştırıldığında, __name__ değişkeni '__main__' olarak ayarlanır; sonuç olarak, if __name__=='__main__': koşulu True olarak değerlendirilir ve herhangi bir şey() fonksiyonunu çağırır. Aşağıdaki print ifadesi, betiğin gerçekten doğrudan çalıştırıldığını doğrular.

Şimdi ScriptP2.py adında yeni bir Python betik dosyası oluşturalım, ScriptP1.py'yi bu dosyaya aktaralım ve ScriptP1 yöntemini herhangi bir şey() olarak çağırmayı deneyelim.

Kod: ScriptP2.py kod burada verilmiştir:

sim kart takıldı ama servis yok android
 import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.') 

Çıktı:

 ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2. 

Açıklama:

Sağlanan Python betiği 'ScriptP1' modülünün aktif betiğe nasıl aktarılacağını gösterir. 'Anything()' yöntemi 'ScriptP1'de mevcuttur ve ana komut dosyasında çağrılır. Bu işlev çağrılır ve komut dosyası 'ScriptP2'den çağrıldı' sonucunu verir. işlev çağrısının tamamlandığını belirtmek için. Bu olay akışı, 'ScriptP1'de belirtilen işlevin erişilebilir olduğunu ve şu anda çalışmakta olan ve 'ScriptP2' olarak tanımlanan komut dosyası bağlamında başarıyla gerçekleştirildiğini gösterir.

ScriptP1 için import ifadesi ScriptP2'nin içinde çalıştırıldığında, __name__ değişkeni ScriptP1 (modül adı) değerine sahipti; ancak ScriptP2 çalıştırılan ilk komut dosyası olduğundan artık __main__ değerine sahip olacaktır.

__name__ Değerini Yazdırma:

Daha iyi anlamanıza yardımcı olmak için __name__ değişkeninin değerini yürütmenin her aşamasında yazdıralım.

Örnek : ScriptP1.py Python betiğinin kaynak kodu aşağıda verilmiştir:

 print('Value or the variable __name__ : ' + __name__) 

Çıktı:

 Value or the variable __name__ : __main__ 

Açıklama:

tkinter düğmesi

Sağlanan Python kodu örneği, komut dosyası doğrudan çalıştırıldığında 'ana' olarak değerlendirilen __name__ değişkeninin değerini verir. Bu, script doğrudan başlatıldığında, başka bir betiğe modül olarak içe aktarılmak yerine if __name__ == '__main__': koşulundan sonra gelen kod bloğunun çalışacağı anlamına gelir. Bu tür davranış, bir komut dosyasının birincil uygulama olarak çalıştırılması ile onu başka bir komut dosyasına modül olarak içe aktarma arasında ayrım yapmak için sıklıkla kullanılır.

Örnek 2: Ve işte ScriptP2.py betiğinin kaynak kodu:

 # importing the file ScriptP1.py import ScriptP1 print('Value or the variable __name__ : ' + __name__) 

Çıktı:

 Value or the variable __name__ : __main__ 

Açıklama:

Sağlanan Python betiği 'ScriptP1.py' dosyasını içe aktarmak için import ifadesini kullanır. ' Çalıştırıldığında 'main', __name__ değişkeninin değeri olarak yazdırılır. Bu, başka bir komut dosyasına modül olarak içe aktarılmak yerine komut dosyasının doğrudan birincil uygulama olarak çalıştırıldığı anlamına gelir. Python komut dosyalarını çalıştırırken bu olağan davranıştır; betiğin yürütme bağlamı __name__ değişkenine yansıtılır.

Özet :

Çoğu programlama dilinde, ana yöntem veya işlev genellikle herhangi bir programın yürütüldüğü nokta olarak kullanılır. Peki ya Python? Bir Python programının (komut dosyası) yürütülmesi normalde sıfır satırda veya programın girinti düzeyi 0'da başlar. Ancak __name__ değişkeninin oluşturulması Python programı çalıştırılmadan önce gerçekleşir. Bu değişken Python'daki ana yöntemin yerine kullanılabilir.