Python Komut Satırından Çıkış


159

Python komut satırından çıkmak için exit () yazmam gerekiyor. Çıkış yazarsam, diyor

Use exit() or Ctrl-Z plus Return to exit

Genellikle yazarken exitprogramdan çıkmak istersiniz. Yorumlayıcı, komut satırından çıkmaya çalıştığımı bildiğinde neden bana yukarıdaki hatayı veriyor? Neden çıkmıyor? Önemli olmadığını biliyorum ve aptalca bir soru ama merak ediyorum.


İşlevlerin genellikle ()sonunda nasıl çağrıldığıyla ilgili olabilir ... aksi takdirde, (muhtemelen) bir değişken olabilir ... veya bir tür nesne olabilir ...
summea

doğru ama tercüman çıkmaya çalıştığımı biliyor ve bu yüzden bu mesajı yazdırıyor. aksi takdirde bir hata mesajı yazdırırdı. Çıkmaya çalıştığımı anlarsa, çıkabilir.
Ank

1
exit veya exit (), dünyada bulduğum kurulumların yaklaşık% 20'sinde benim için bir hata atıyor ... Yalnızca CTRL + Z + return tutarlı bir şekilde çalışıyor.
Paulo Carvalho

Yanıtlar:


41

Benim python yorumlayıcımda exitaslında bir dizedir ve işlev değil - 'Use Ctrl-D (i.e. EOF) to exit.'. Çevirmeninizi girerek kontrol edebilirsiniztype(exit)

Aktif python'da olan şey, çıkışın bir işlev olmasıdır. Fonksiyonu çağırmazsanız, nesnenin dizgi temsilini yazdıracaktır. Bu, döndürülen herhangi bir nesne için varsayılan davranıştır. Tasarımcılar, insanların yorumlayıcıdan çıkmak için exit yazmayı deneyebileceklerini düşündüler, bu yüzden çıkış işlevinin dize temsilini yararlı bir mesaj haline getirdiler. Bu davranışı yazarak str(exit)veya hatta kontrol edebilirsiniz print exit.


17
Ctrl-Z, Unix benzeri sistemlerde Ctrl-D yapacağınız Windows'ta (yani DOS) yaptığınız şeydir.
Karl Knechtel

@KarlKnechtel Ah, bilmek güzel. Windows üzerinde çok az programlama deneyimim var.
Dunes

64

Bu benim için işe yarıyor, python komut isteminden çıkmanın en iyi yolu.

çıkış()


4
Bu cevap konusunda kafam karıştı ... Sorunun kendisi bunun exit()işe yaradığını zaten bildiklerini ve exitparens olmadan neden işe yaramadığını bilmek istediklerini söylüyor . Yani bu cevap sadece sorunun bir kısmını tekrarlıyor ve aslında cevap vermiyor.
Ben Lee

Soruyu okumadığım için bu yanıta olumsuz oy vermek istiyorum, ancak çoğu python kurulumunda bunun doğru olduğunu varsayıyorum; sadece kullanıcı bunun kendi durumunda işe yaramadığını söyledi, bu yüzden tavsiye etmek ... uygunsuz görünüyor.
27

37

Eğer yazdığınızda exitkomut satırında, bu isim ve çağrıları ile değişken bulur __repr__(veya __str__üzerinde). Genellikle şöyle bir sonuç alırsınız:

<function exit at 0x00B97FB0>

Ancak, exitnesnenin bunun yerine yararlı bir mesaj görüntülemesi için bu işlevi yeniden tanımlamaya karar verdiler . Bunun aptalca bir davranış olup olmadığı, öznel bir sorudur, ancak bunun "hemen çıkmamasının" olası bir nedeni şudur:

Örneğin, bir hata ayıklayıcıdaki bazı koda baktığınızı ve nesnelerden birinin exitişleve başvurduğunu varsayalım . Hata ayıklayıcı, __repr__bu işlevi size göstermek için o nesneyi çağırmaya çalıştığında , program aniden durur! Bu gerçekten beklenmedik bir durum olurdu ve buna karşı alınacak önlemler işleri daha da karmaşık hale getirebilir (örneğin, bu davranışı komut satırıyla sınırlasanız bile, ya exitözniteliği olan bir nesneyi yazdırmaya çalışırsanız ?)


4
Bu durumda, gerçek çıkış işlevi, siz import sys, daha sonra yorumlayıcıdan çıkmak için sys.exit () 'i çağırmanız sürece kapsam dahilinde bile değildir .
Michael Dillon

19

Bu mesajın __str__özniteliğidirexit

şu örneklere bak :

1

>>> print exit
Use exit() or Ctrl-D (i.e. EOF) to exit

2

>>> exit.__str__()
'Use exit() or Ctrl-D (i.e. EOF) to exit'

3

>>> getattr(exit, '__str__')()
'Use exit() or Ctrl-D (i.e. EOF) to exit'

19

Python yorumlayıcısından ile çıkmanızı öneririm Ctrl-D. Bu, dosya sonu veya iletim sonu için eski ASCII kodudur.


Komut dosyası bir hatayla karşılaştığında bu yöntem çalışmıyor gibi görünüyor.
blaylockbk

2
Ctrl-BreakWindows'ta tutarlı bir şekilde çalışır. Ctrl-Dveya Ctrl-ZWindows için Python 2.7, 3.4, 3.6'da çalıştı. Ancak Python 3.7'de bunlar çalışmayı durdurdu ve çıkan en kısa ASCII dizisi Ctrl-Z Enter.
Bob Stein

14

Windows kullanımında Anaconda 4.5+ ve Python 3.6+ ile

Ctrl+Z

veya

exit()

Bazı durumlarda kullanmanız gerekebilir

Ctrl+Break

Bilgisayarınızda Breakanahtar yoksa, buraya bakın .


8

Yorumlayıcı, komutlar verdiğiniz bir kabuk olmadığı için, bu - yani - bir yorumlayıcıdır. Ona verdiğiniz şeyler Python kodudur.

Python'un sözdizimi öyledir ki exit, tek başına bir nesnenin adından başka bir şey olamaz. Basitçe bir nesneye atıfta bulunmak aslında hiçbir şey yapamaz (okuma-değerlendirme-yazdırma döngüsünün normalde yaptığı şey dışında; yani nesnenin dizgi temsilini gösterir).


6

Bunu düzeltebilirsin.

PYTHONSTARTUPAşağıdakilerle bir python dosyasına bağlantı oluşturun

# Make exit work as expected
type(exit).__repr__ = type(exit).__call__

Bu nasıl çalışıyor?

Python komut satırı bir okuma-değerlendirme-yazdırma döngüsüdür, yani metni yazdığınızda o metni okuyacak, değerlendirecek ve sonunda sonucu yazdıracaktır.

Yazdığınızda exit(), çağrılabilir bir nesne türü olarak değerlendirilir ve sistemden çıkan işlevini site.Quitterçağırır __call__. Yazdığınızda exit, aynı çağrılabilir nesneyi değerlendirir, onu çağırmadan nesne yazdırılır ve bu da sırayla çağırır__repr__ .

Biz bağlayarak bu yararlanabilir __repr__için __call__ve böylece bile biz yazın sisteminden çıkmakta beklenen davranışı elde exitparantez olmadan.


4
exit"Yararlı" dizeyi yazdırmak için çaba sarf ettiler , ancak doğal olanı yapmak ve yorumlayıcıdan çıkmak için onu bağlayamadılar. Her seferinde parantez yazmaya zorlanmak sinir bozucu. Bu cevap mükemmel ve onun yerine kabul edilen cevap olmalı.
Przemek D

3

Python terminalinden çıkmak için şunları yapmanız yeterlidir:

exit()

Lütfen dikkat edin, çoğu kullanıcının aramadan çıkışla karıştırması olarak adlandırılan bir işlevdir, ancak yeni Pyhton terminali bir mesaj gösterir ...

veya kısayol olarak şuna basın:

Ctrl + D

klavyenizde ...

ctrl + D


1
Söylediğiniz her şey, yukarıdaki cevaplarda zaten ele alınmıştır.
Przemek D

0

Python komut satırına takıldıysanız ve yukarıdaki çözümlerden hiçbiri sizin için işe yaramadıysa, deneyin exit(2)


-1

"çıkış", Python programınızda kullanılabilen geçerli bir değişken adıdır. Sadece o değişkenin değerini görmeye çalışırken yorumlayıcıdan çıkmak istemezsiniz.


Atamanız dışında exit, bu sembolü geçersiz kılarsınız ve exit()artık çalışmazsınız. Bu sembol geçerli bir değişken adı olsa da, onu bu şekilde kullanmak pek iyi bir uygulama gibi görünmüyor.
Przemek D
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.