Apa perbedaan antara raw_input()
dan input()
dalam Python 3?
python
python-3.x
input
pkumar
sumber
sumber
input
keraw_input
dan mengabaikan kesalahan nama.Jawaban:
Perbedaannya adalah bahwa
raw_input()
tidak ada dalam Python 3.x, sementarainput()
tidak. Sebenarnya, yang lamaraw_input()
telah diubah namanya menjadiinput()
, dan yang lamainput()
hilang, tetapi dapat dengan mudah disimulasikan dengan menggunakaneval(input())
. (Ingat itueval()
jahat. Coba gunakan cara yang lebih aman untuk menguraikan masukan Anda jika memungkinkan.)sumber
raw_input
...?" - "Perbedaannya adalah tidak adaraw_input
." ... Perbedaan yang cukup drastis, kataku!eval
(danexec
) umumnya harus dihindari karena mereka dapat menjadi risiko keamanan. Untuk perincian, silakan lihat Eval benar-benar berbahaya oleh veteran SO Ned Batchelder. Dan tentu saja saran itu juga berlaku untuk Python 2 lamainput
.eval()
danexec()
, tetapi Anda harus terlebih dahulu memahami mengapa Anda tidak harus menggunakaneval()
sebelum memutuskan untuk menggunakannya.Dalam Python 2 ,
raw_input()
mengembalikan sebuah string, daninput()
mencoba menjalankan input sebagai ekspresi Python.Karena mendapatkan string hampir selalu seperti yang Anda inginkan, Python 3 melakukannya dengan
input()
. Seperti yang dikatakan Sven, jika Anda menginginkan perilaku lama, itu akaneval(input())
berhasil.sumber
raw_input()
.Python 2:
raw_input()
mengambil persis apa yang diketik pengguna dan meneruskannya kembali sebagai string.input()
pertama mengambilraw_input()
dan kemudian melakukaneval()
di atasnya juga.Perbedaan utama adalah bahwa
input()
mengharapkan pernyataan python yang benar secara sintaksis di manaraw_input()
tidak.Python 3:
raw_input()
diganti namanyainput()
jadi sekaranginput()
mengembalikan string yang tepat.input()
dihapus.Jika Anda ingin menggunakan yang lama
input()
, artinya Anda perlu mengevaluasi input pengguna sebagai pernyataan python, Anda harus melakukannya secara manual dengan menggunakaneval(input())
.sumber
Dalam Python 3,
raw_input()
tidak ada yang sudah disebutkan oleh Sven.Dalam Python 2,
input()
fungsi mengevaluasi input Anda.Contoh:
Pada contoh di atas, Python 2.x mencoba mengevaluasi harsha sebagai variabel daripada string. Untuk menghindari itu, kita dapat menggunakan tanda kutip ganda di sekitar input kita seperti "harsha":
raw_input ()
Fungsi raw_input () `tidak mengevaluasi, itu hanya akan membaca apa pun yang Anda masukkan.
Contoh:
Contoh:
Dalam contoh di atas, saya hanya mencoba mengevaluasi input pengguna dengan
eval
fungsi.sumber
Saya ingin menambahkan sedikit lebih detail pada penjelasan yang diberikan oleh semua orang untuk pengguna python 2 .
raw_input()
, yang, sekarang, Anda tahu yang mengevaluasi data apa pun yang dimasukkan pengguna sebagai string. Ini berarti bahwa python bahkan tidak mencoba untuk memahami data yang dimasukkan lagi. Yang akan dipertimbangkan adalah bahwa data yang dimasukkan akan berupa string, apakah itu string aktual atau int atau apa pun.Sementara
input()
di sisi lain mencoba memahami data yang dimasukkan oleh pengguna. Jadi input sepertihelloworld
bahkan akan menunjukkan kesalahan sebagai 'helloworld is undefined
'.Sebagai kesimpulan, untuk python 2 , untuk memasukkan string juga Anda harus memasukkannya seperti '
helloworld
' yang merupakan struktur umum yang digunakan dalam python untuk menggunakan string.sumber
Jika Anda ingin memastikan, bahwa kode Anda berjalan dengan python2 dan python3, gunakan input fungsi () dalam skrip Anda dan tambahkan ini untuk memulai skrip Anda:
sumber