Bu, python dosyasını nasıl çalıştırdığınıza bağlıdır. Bunu pycharm'ın içinden yapmanın pek çok yolu vardır (belki çok fazla).
Yaptığınız şeyin yeşil üçgene basmak olduğunu tahmin ediyorum. Bu, dosyayı alttaki "Python Console" sekmesinde bulunan aynı kabukta yürütmez. Bunun yerine yeni bir kabuk oluşturur, dosyayı yürütür ve dosya yürütüldüğünde varsayılan olarak kabuğu kapatır. Bu kabuğun alt kısmında 'Çalıştır' sekmesinde bir şey olduğunu görebilirsiniz. Shivendra'nın cevabından, senaryo çıkışında kabuğu öldürmekten kaçınmanın bir yolu olabileceğine benziyor. Bu durumda, 'Çalıştır' sekmesinde kalan bir terminal/kabuk ve 'Python Konsolu' sekmesindeki değil kullanıyor olmalısınız.
Bu, Çalıştır yerine Hata Ayıklama'yı kullanırsanız ne olacağına çok benzer. Bir tercüman oluşturur, hata ayıklayıcısını ekler, senaryoyu çalıştırır, bittiğinde her şeyi öldürür. Bu 'Hata Ayıklama' sekmesinde yaşar.
Aklınızda olanı gerçekleştirmenin en kolay yolu, dosyayı aşağıdaki gibi önceden varolan 'Python Console' içinde çalıştırmak olacaktır. Bu durumda, betik __main__
gibi çalışır, bu yüzden bir if __name__ == "__main__":
varsa, True olarak değerlendirir ve if bloğu içindeki herhangi bir kod da yürütülür. (Bu konuda daha fazla geç, şu anda ne olduğunu yoksa) ipython veya başka (bir dosya sadece 'Python Shell' içinden içe olmaktır 'run' olarak
In[2]: dir()
Out[2]:
['In',
'Out',
'_',
'__',
'___',
'__builtin__',
'__builtins__',
'__doc__',
'__name__',
'__package__',
'_dh',
'_i',
'_i1',
'_i2',
'_ih',
'_ii',
'_iii',
'_oh',
'_sh',
'exit',
'get_ipython',
'quit',
'sys']
In[3]: run -m conventions.iec60063
In[4]: dir()
Out[4]:
['Decimal',
'E12',
'E24',
'E3',
'E6',
'In',
'Out',
'_',
'_3',
'__',
'___',
'__builtin__',
'__builtins__',
'__doc__',
'__loader__',
'__name__',
'__nonzero__',
'__package__',
'_dh',
'_i',
'_i1',
'_i2',
'_i3',
'_i4',
'_ih',
'_ii',
'_iii',
'_oh',
'_sh',
'cap_ostrs',
'elem',
'exit',
'gen_vals',
'get_ipython',
'get_series',
'idx',
'ind_ostrs',
'quit',
'res_ostrs',
'sys',
'zen_ostrs']
Tercih ettiğim yolu) kendisi ve başlangıç kodunun çalıştırılması gerekip gerekmediğini elle çalıştır. Bu, ad alanını aşırı derecede kirletmemek ve senaryoyu bir modül olarak kullanıyor olmanız halinde beklediğiniz şeylere çok yakın olan bir ortam sunma avantajına sahiptir (Pycharm ve IPython ve otomatik tamamlama, gerçekten işe yaramaya başlıyor).Her iki yöntemde de, hata ayıklayıcısını 'Python Console'un yorumlayıcısına' kabuğun yanındaki 'Hata Ayıklayıcı' simgesini kullanarak (yeşil hata) ekleme seçeneğiniz vardır.
Kısa örneği ('Python Konsolu' sekmesinde) aşağıdaki gibidir: Eğer neyin farkında olmalı, böylece
Özünde
In[2]: dir()
Out[2]:
['In',
'Out',
'_',
'__',
'___',
'__builtin__',
'__builtins__',
'__doc__',
'__name__',
'__package__',
'_dh',
'_i',
'_i1',
'_i2',
'_ih',
'_ii',
'_iii',
'_oh',
'_sh',
'exit',
'get_ipython',
'quit',
'sys']
In[3]: import conventions.iec60063
In[4]: dir()
Out[4]:
['In',
'Out',
... (all the same ones as before)
'conventions',
... (all the same ones as before)
]
, sen olsa da, örneğin dosyayı çalıştıran olmaz Yapıyoruz. Bir piton dosyasını çalıştırdığınızda
, modül o __name__
"__main__"
olduğunu sanan ve bu (kesinlikle piton öğrenme sürecinde erken bakmak gereken bir şey olan) if __name__ == "__main__":
hile kökenidir. Kodun yürütülmesini izlemeyi denerseniz, yorumlayıcı modülde sınıf veya işlev olmayan her şeyi çalıştırır. Bu, birçok python betiğinde görebileceğiniz if __name__ == "__main__":
koşulunu içerir. if
bloğunun içeriği, yalnızca betik kendiliğinden (veya IPython'da -m modülünü kullanarak) çalıştırılıyorsa çalıştırılır (
Diğer taraftan, bir modülü içe aktardığınızda, aynı yürütme sırası olur. if __name__ == "__main__":
'un False olarak değerlendirileceği ve bu blokta yer alan kodların çağrılmayacağı. Bu nedenle, ihtiyacınız varsa, if __name__ == "__main__":
bloğundaki el ile yürütmelisiniz. Bu görevi basitleştirmek için yaygın olan bir örnek, eğer blokta (veya komut satırı argümanlarını önemsiyorsanız, sadece oradakileri idare ederseniz) minimal fonksiyon çağrısına sahip olmaktır, daha sonra yürütmenin büyük bir kısmını kolayca çağrılabilir bir işleve aktarabilirsiniz. :
sonra modülünü içe sonunda ama yine bu kodu çalıştırmak için gereken durumda
def main():
pass
if __name__ == "__main__":
main()
, yapmanız gereken tüm ana() işlevini çağırmak. yürütülmesi için (
In[2]: import conventions.iec60063
In[3]: conventions.iec60063.main()
pycharm kodu yürütme diğer bazı daha egzotik yolları vardır: gibi bir şey olur Yukarıdaki örnekte, ne yaparım (modül 'çalışan' ben bazı kod çalıştırmasına olsaydı) Gerçekten sadece ihtiyacım olmayan bir dosya ve böyle küçük bir parça), nasıl çalıştığını tam olarak bilmiyorum.
Yazdığınız komutların tam listesini konsolda yayınlayabilir misiniz? –
Şüphesiz, sorun tanımımı güncelleştirdim – Jason
"run -m student" denediniz mi? –