Keluar dari Baris Perintah python


152

Untuk keluar dari baris perintah Python, saya harus mengetikkan exit (). Jika saya mengetik keluar, katanya

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

Biasanya ketika Anda mengetik exit, Anda ingin keluar dari program. Mengapa penerjemah memberi saya kesalahan di atas ketika tahu saya mencoba keluar dari baris perintah? Kenapa tidak keluar begitu saja? Aku tahu itu tidak masalah dan itu pertanyaan konyol tapi aku penasaran.


Mungkin ada hubungannya dengan bagaimana fungsi sering dipanggil dengan ()di akhir ... jika tidak, itu mungkin (mungkin) menjadi variabel ... atau semacam objek ...
summea

benar tetapi penerjemah tahu bahwa saya mencoba untuk keluar dan itulah sebabnya mencetak pesan itu. jika tidak maka akan mencetak pesan kesalahan. Jika tahu saya mencoba untuk keluar, itu bisa keluar.
Ank

1
keluar atau keluar () melempar kesalahan untuk saya sekitar 20% dari instalasi yang saya temukan di dunia ... Hanya CTRL + Z + kembali secara konsisten bekerja.
Paulo Carvalho

Jawaban:


37

Dalam penerjemah python saya exitsebenarnya adalah string dan bukan fungsi - 'Use Ctrl-D (i.e. EOF) to exit.'. Anda dapat memeriksa juru bahasa Anda dengan memasukkantype(exit)

Dalam python aktif yang terjadi adalah bahwa jalan keluar adalah fungsi. Jika Anda tidak memanggil fungsi itu akan mencetak representasi string objek. Ini adalah perilaku default untuk objek yang dikembalikan. Hanya saja para perancang berpikir orang mungkin mencoba mengetik keluar untuk keluar dari juru bahasa, sehingga mereka membuat representasi string dari fungsi keluar pesan yang bermanfaat. Anda dapat memeriksa perilaku ini dengan mengetik str(exit)atau bahkan print exit.


14
Ctrl-Z adalah apa yang Anda lakukan pada Windows (well, DOS) di mana Anda akan melakukan Ctrl-D pada sistem mirip Unix.
Karl Knechtel

@KarlKnechtel Ah, senang tahu. Saya memiliki sedikit pengalaman pemrograman di windows.
Dunes

60

Ini bekerja untuk saya, cara terbaik untuk keluar dari python prompt.

keluar()


4
Saya bingung tentang jawaban ini ... pertanyaannya sendiri mengatakan mereka sudah tahu itu exit()bekerja, dan mereka ingin tahu mengapa exittanpa orangtua tidak bekerja. Jadi jawaban ini hanya mengulang sebagian dari pertanyaan dan tidak benar-benar menjawabnya.
Ben Lee

Saya agak ingin menurunkan jawaban ini karena tidak membaca pertanyaan, tapi saya kira untuk sebagian besar instalasi python ini benar; hanya saja pengguna mengatakan ini tidak berfungsi dalam kasus mereka, jadi merekomendasikannya sepertinya ... tidak tepat.
27

37

Ketika Anda mengetik exitdi baris perintah, itu menemukan variabel dengan nama itu dan panggilan __repr__(atau __str__) di atasnya. Biasanya, Anda akan mendapatkan hasil seperti:

<function exit at 0x00B97FB0>

Tetapi mereka memutuskan untuk mendefinisikan kembali fungsi itu agar exitobjek menampilkan pesan yang bermanfaat. Apakah itu perilaku bodoh atau tidak, adalah pertanyaan subjektif, tapi satu kemungkinan alasan mengapa itu tidak "keluar begitu saja" adalah:

Misalkan Anda sedang melihat beberapa kode dalam debugger, misalnya, dan salah satu objek referensi exitfungsi. Ketika debugger mencoba memanggil __repr__objek itu untuk menampilkan fungsi itu untuk Anda, program tiba-tiba berhenti! Itu akan sangat tak terduga, dan langkah-langkah untuk melawan yang mungkin mempersulit hal-hal lebih lanjut (misalnya, bahkan jika Anda membatasi perilaku itu ke baris perintah, bagaimana jika Anda mencoba mencetak beberapa objek yang memiliki exitatribut?)


4
Dalam hal ini, fungsi keluar sebenarnya bahkan tidak dalam ruang lingkup kecuali Anda import sys, setelah itu Anda akan memanggil sys.exit () untuk keluar dari juru bahasa.
Michael Dillon

19

Pesan ini adalah __str__atribut dariexit

lihat contoh-contoh ini:

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

Saya sarankan Anda keluar dari juru bahasa Python Ctrl-D. Ini adalah kode ASCII lama untuk end-of-file atau end-of-transmission.


Sepertinya metode ini tidak berfungsi jika skrip mengalami kesalahan.
blaylockbk

2
Ctrl-Breakbekerja secara konsisten di Windows. Ctrl-Datau Ctrl-Zbekerja di Windows untuk Python 2.7, 3.4, 3.6. Tetapi dalam Python 3.7 ini berhenti bekerja, dan urutan ASCII terpendek yang keluar adalah Ctrl-Z Enter.
Bob Stein

14

Dengan Anaconda 4.5+ dan Python 3.6+ pada penggunaan Windows

Ctrl+Z

atau

exit()

Dalam beberapa kasus, Anda mungkin harus menggunakan

Ctrl+Break

Jika komputer Anda tidak memiliki Breakkunci, lihat di sini .


8

Karena penerjemah bukan shell di mana Anda memberikan perintah, itu - well - penerjemah. Hal-hal yang Anda berikan adalah kode Python.

Sintaksis Python sedemikian rupa sehingga exit, dengan sendirinya, tidak mungkin menjadi apa pun selain nama untuk objek. Cukup merujuk ke suatu objek tidak dapat benar-benar melakukan apa pun (kecuali apa yang biasanya dilakukan loop baca-eval-print; yaitu menampilkan representasi string objek).


6

Anda bisa memperbaikinya.

Tautkan PYTHONSTARTUPke file python dengan yang berikut ini

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

Bagaimana cara kerjanya?

Baris perintah python adalah read-evaluation-print-loop, saat Anda mengetik teks akan membaca teks itu, mengevaluasi itu, dan akhirnya mencetak hasilnya.

Ketika Anda mengetik, exit()ia mengevaluasi ke objek tipe yang dapat site.Quitterdipanggil dan memanggil __call__fungsinya yang keluar dari sistem. Ketika Anda mengetiknya exitmengevaluasi ke objek yang bisa dipanggil yang sama, tanpa memanggilnya objek dicetak yang pada gilirannya panggilan __repr__pada objek.

Kita bisa mengambil keuntungan dari ini dengan menghubungkan __repr__ke __call__dan dengan demikian mendapatkan perilaku yang diharapkan dari keluar sistem bahkan ketika kita mengetik exittanpa tanda kurung.


4
Mereka berusaha keras untuk exitmencetak string "membantu", tetapi mereka tidak bisa hanya mengikatnya untuk melakukan hal yang wajar dan keluar dari juru bahasa. Terpaksa mengetik kurung setiap kali membuat frustrasi. Jawaban ini sempurna dan harus diterima sebagai gantinya.
Przemek D

3

Untuk keluar dari terminal Python , cukup lakukan:

exit()

Harap perhatikan bahwa ini adalah fungsi yang disebut sebagai sebagian besar pengguna mencampurnya dengan keluar tanpa menelepon, tetapi terminal Pyhton baru menampilkan pesan ...

atau sebagai pintasan, tekan:

Ctrl + D

di keyboard Anda ...

ctrl + D


1
Semua yang Anda katakan sudah tercakup dalam jawaban di atas.
Przemek D

0

Jika Anda terjebak di baris perintah python dan tidak ada solusi di atas yang berfungsi untuk Anda, coba exit(2)


-1

"exit" adalah nama variabel yang valid yang dapat digunakan dalam program Python Anda. Anda tidak ingin keluar dari juru bahasa saat Anda hanya mencoba melihat nilai variabel itu.


Kecuali jika Anda menetapkan untuk exit, Anda menimpa simbol ini, dan exit()tidak akan berfungsi lagi. Meskipun simbol ini adalah nama variabel yang valid, menggunakannya dengan cara seperti itu tampaknya bukan praktik yang sangat baik.
Przemek D
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.