Aby wyjść z wiersza poleceń Pythona, muszę wpisać exit (). Jeśli napiszę exit, to mówi
Use exit() or Ctrl-Z plus Return to exit
Zwykle podczas pisania exit
chciałbyś wyjść z programu. Dlaczego interpreter wyświetla powyższy błąd, skoro wie, że próbuję wyjść z wiersza poleceń? Dlaczego po prostu nie wychodzi? Wiem, że to nie ma znaczenia i to głupie pytanie, ale jestem ciekawy.
()
na końcu ... w przeciwnym razie może to być (prawdopodobnie) zmienna ... lub jakiś obiekt ...Odpowiedzi:
W moim interpreter Pythona
exit
jest w rzeczywistości ciągiem znaków, a nie funkcją -'Use Ctrl-D (i.e. EOF) to exit.'
. Możesz sprawdzić swojego tłumacza, wchodząctype(exit)
W aktywnym Pythonie dzieje się tak, że wyjście jest funkcją. Jeśli nie wywołasz funkcji, wydrukuje ona ciąg znaków reprezentujący obiekt. Jest to domyślne zachowanie dla każdego zwróconego obiektu. Po prostu projektanci myśleli, że ludzie mogą próbować wpisać exit, aby wyjść z interpretera, więc uczynili użyteczną wiadomość z reprezentacji ciągu znaków funkcji exit. Możesz sprawdzić to zachowanie, wpisując
str(exit)
lub nawetprint exit
.źródło
To działa dla mnie, najlepszy sposób na wyjście z podpowiedzi Pythona.
źródło
exit()
działa, i chcą wiedzieć, dlaczegoexit
bez parens nie działa. Więc ta odpowiedź po prostu powtarza część pytania i tak naprawdę na nie nie odpowiada.Kiedy wpisujesz
exit
w linii poleceń, znajduje zmienną o tej nazwie i wywołuje__repr__
(lub__str__
) na niej. Zwykle otrzymujesz wynik taki jak:Postanowili jednak przedefiniować tę funkcję, aby
exit
obiekt wyświetlał pomocny komunikat. To, czy jest to głupie zachowanie, czy nie, jest subiektywną kwestią, ale jednym z możliwych powodów, dla których nie „po prostu się kończy”, jest:Załóżmy, że na przykład patrzysz na kod w debugerze, a jeden z obiektów odwołuje się do
exit
funkcji. Kiedy debugger próbuje wywołać__repr__
ten obiekt, aby wyświetlić tę funkcję, program nagle się zatrzymuje! Byłoby to naprawdę nieoczekiwane, a środki, które należy przeciwdziałać, mogłyby jeszcze bardziej skomplikować sytuację (na przykład, nawet jeśli ograniczysz to zachowanie do wiersza poleceń, co jeśli spróbujesz wydrukować obiekt, który maexit
jako atrybut?)źródło
import sys
, po czym wywołałbyś sys.exit (), aby wyjść z interpretera.Ta wiadomość jest
__str__
atrybutemexit
Spójrz na te przykłady :
1
2
3
źródło
Zalecam wyjście z interpretera Pythona za pomocą Ctrl-D. To jest stary kod ASCII dla końca pliku lub końca transmisji.
źródło
Ctrl-Break
działa konsekwentnie w systemie Windows.Ctrl-D
lubCtrl-Z
pracował w systemie Windows dla Python 2.7, 3.4, 3.6. Ale w Pythonie 3.7 przestały one działać, a najkrótsza kończy się sekwencja ASCIICtrl-Z
Enter
.Z Anaconda 4.5+ i Python 3.6+ w systemie Windows używaj
lub
W niektórych przypadkach może być konieczne użycie
Jeśli twój komputer nie ma
Break
klucza, zobacz tutaj .źródło
Ponieważ interpreter nie jest powłoką, w której podajesz polecenia, jest - cóż - tłumaczem. To, co mu dajesz, to kod Pythona.
Składnia Pythona jest taka, że
exit
sama w sobie nie może być niczym innym niż nazwą obiektu. Zwykłe odwołanie się do obiektu nie może w rzeczywistości nic zrobić (poza tym, co normalnie robi pętla read-eval-print; tj. Wyświetla ciąg znaków reprezentujący obiekt).źródło
Możesz to naprawić.
Link
PYTHONSTARTUP
do pliku Pythona z następującymJak to działa?
Wiersz poleceń Pythona jest pętlą odczytu-oceny-wydruku, to znaczy, kiedy wpiszesz tekst, odczyta on ten tekst, oceni go i ostatecznie wydrukuje wynik.
Kiedy wpisujesz,
exit()
zwraca on wynik do wywoływalnego obiektu typusite.Quitter
i wywołuje swoją__call__
funkcję, która zamyka system. Kiedy wpiszesz,exit
zwraca się do tego samego wywoływalnego obiektu, bez wywoływania go drukowany jest obiekt, który z kolei wywołuje__repr__
obiekt.Możemy to wykorzystać, łącząc
__repr__
się__call__
i uzyskując oczekiwane zachowanie wychodzenia z systemu, nawet gdy wpisujemyexit
bez nawiasów.źródło
exit
wydrukować „pomocny” ciąg, ale nie mogli go po prostu powiązać, aby zrobić naturalną rzecz i wyjść z interpretera. Bycie zmuszonym do wpisywania nawiasów za każdym razem jest frustrujące. Ta odpowiedź jest doskonała i zamiast tego powinna być akceptowana.Aby wyjść z terminala Python , po prostu wykonaj:
Proszę zwrócić uwagę, że jest to funkcja, która jak większość użytkowników łączyła ją z wyjściem bez wywoływania, ale nowy terminal Pyhton wyświetla komunikat ...
lub jako skrót naciśnij:
na klawiaturze ...
źródło
Jeśli utknąłeś w linii poleceń Pythona i żadne z powyższych rozwiązań nie zadziałało, spróbuj
exit(2)
źródło
„exit” to poprawna nazwa zmiennej, której można używać w programie w języku Python. Nie chciałbyś wychodzić z interpretera, gdy tylko próbujesz zobaczyć wartość tej zmiennej.
źródło
exit
, zastąpisz ten symbol iexit()
przestaniesz działać. Chociaż ten symbol jest prawidłową nazwą zmiennej, używanie go w taki sposób nie wydaje się być bardzo dobrą praktyką.