Sự khác biệt giữa raw_input()
và input()
trong python3.x là gì?Sự khác nhau giữa raw_input() và input() trong python3.x là gì?
Trả lời
Sự khác biệt là raw_input()
không tồn tại trong Python 3.x, trong khi input()
thì có. Trên thực tế, cũ raw_input()
đã được đổi tên thành input()
và cũ input()
đã biến mất, nhưng có thể dễ dàng được mô phỏng bằng cách sử dụng eval(input())
. (Hãy nhớ rằng eval()
là ác, vì vậy nếu cố gắng sử dụng những cách an toàn hơn của phân tích đầu vào của bạn nếu có thể.)
"Sự khác nhau giữa' raw_input' ...? " - "Sự khác biệt là không có' raw_input'. " ... Đúng là một sự khác biệt quyết liệt, tôi muốn nói! –
Trong Python 2 tôi đoán họ giả định các lập trình viên muốn thực sự "thực hiện" như một lệnh người dùng nhập vào, vì ban đầu (tôi đoán) yêu cầu đầu vào từ người dùng có thể chỉ cho điều đó. Nhưng khi họ nhận ra các lập trình viên cũng có thể muốn lấy đầu vào "thô", họ đã thiết kế một hàm khác gọi là "raw_input". Trong Python 3 họ nhận thấy điều ngu xuẩn là gì và chỉ đơn giản là xóa thực thi mặc định của đầu vào ban đầu, chỉ cho một hàm đơn giản. –
Repl.it, chạy Py3.5.1 có raw_input() làm từ khóa. – OldBunny2800
Trong Python , raw_input()
trả về một chuỗi, và input()
cố gắng để chạy các đầu vào như một biểu Python.
Vì việc nhận chuỗi gần như luôn là thứ bạn muốn, Python 3 thực hiện điều đó với input()
. Như Sven nói, nếu bạn muốn hành vi cũ, eval(input())
sẽ hoạt động.
Bạn nên thêm rằng Python 3 không có 'raw_input()'. –
việc sử dụng đầu vào đang chạy như là biểu thức python là gì? –
@AkshayVijayJain, có thể nó được thiết kế để nhập số. Nhưng nó hoàn toàn không an toàn. – MarSoft
Python 2:
raw_input()
mất chính xác những gì người dùng gõ và chuyển nó trở lại như là một chuỗi.input()
trước tiên mấtraw_input()
và sau đó thực hiệneval()
trên đó.
Sự khác biệt chính là input()
hy vọng một tuyên bố python đúng cú pháp nơi raw_input()
không.
Python 3:
raw_input()
được đổi tên thànhinput()
vì vậy bây giờinput()
trả về chuỗi chính xác.- Cũ
input()
đã bị xóa.
Nếu bạn muốn sử dụng số input()
cũ, có nghĩa là bạn cần đánh giá đầu vào của người dùng làm câu lệnh python, bạn phải thực hiện thủ công bằng cách sử dụng eval(input())
.
... trong python 2. – askewchan
không áp dụng cho python 3 –
Tôi muốn thêm chi tiết hơn một chút vào lời giải thích do mọi người cung cấp cho người dùng python 2. raw_input()
, mà bây giờ, bạn biết rằng đánh giá dữ liệu nào người dùng nhập vào dưới dạng chuỗi. Điều này có nghĩa là python không cố gắng hiểu dữ liệu đã nhập nữa. Tất cả những gì nó sẽ xem xét là dữ liệu đã nhập sẽ là chuỗi, cho dù đó có phải là chuỗi thực hay int hay bất kỳ thứ gì. Mặt khác, trong khi input()
cố gắng hiểu dữ liệu do người dùng nhập. Vì vậy, đầu vào như helloworld
thậm chí sẽ hiển thị lỗi là 'helloworld is undefined
'.
Kết luận, đối với python 2, để nhập chuỗi, bạn cần phải nhập nó như 'helloworld
' là cấu trúc chung được sử dụng trong python để sử dụng chuỗi.
Trong Python 3, raw_input()
không tồn tại mà đã được đề cập bởi Sven.
Trong Python 2, hàm input()
đánh giá đầu vào của bạn.
Ví dụ:
name = input("what is your name ?")
what is your name ?harsha
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
name = input("what is your name ?")
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
Trong ví dụ trên, Python 2.x đang cố gắng để đánh giá Harsha như là một biến chứ không phải là một chuỗi. Để tránh điều đó, chúng ta có thể sử dụng dấu ngoặc kép quanh đầu vào của chúng tôi như "Harsha":
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
raw_input()
Các raw_input() `chức năng không đánh giá, nó sẽ chỉ đọc những gì bạn đi vào.
Ví dụ:
name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'
Ví dụ:
name = eval(raw_input("what is your name?"))
what is your name?harsha
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
name = eval(raw_input("what is your name?"))
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
Trong ví dụ trên, tôi chỉ cố gắng để đánh giá đầu vào người dùng với eval
chức năng.
- 1. Sự khác biệt giữa `đầu vào` và` raw_input`
- 2. Sự khác nhau giữa int x = 1 và int x (1) trong C++ là gì?
- 3. Sự khác nhau giữa ‘var $ x’ và ‘var x’ trong javascript là gì?
- 4. Sự khác nhau giữa == và = trong Prolog là gì?
- 5. Haskell: Sự khác nhau giữa (+1) và (\ x-> x + 1) là gì?
- 6. Sự khác nhau giữa [undefined] và [,] là gì?
- 7. sự khác nhau giữa UIImageView và drawInRect là gì?
- 8. Trong Python, sự khác nhau giữa ".append()" và "+ = []" là gì?
- 9. Sự khác nhau giữa // và /// trong Visual Studio là gì?
- 10. Sự khác nhau giữa: = và + = trong tạo tệp là gì?
- 11. Sự khác nhau giữa * và. * Trong MATLAB là gì?
- 12. Sự khác nhau giữa $ @ và $ * trong UNIX là gì?
- 13. Sự khác nhau giữa: = và = trong MySQL là gì?
- 14. Sự khác nhau giữa "||" là gì và "hoặc" trong Perl?
- 15. Sự khác nhau giữa 'eq' và '= ~' trong Perl là gì?
- 16. Sự khác nhau giữa 'và #' trong Lisp là gì?
- 17. Sự khác nhau giữa null và System.DBNull.Value là gì?
- 18. Sự khác nhau giữa .bashrc, .bash_profile và .environment là gì?
- 19. Sự khác biệt giữa x: Khóa và x: Tên trong WPF là gì?
- 20. Sự khác nhau giữa PyMODINIT_FUNC và PyModule_Create
- 21. Sự khác nhau giữa VCS và SCM là gì?
- 22. Sự khác nhau giữa ssize_t và ptrdiff_t là gì?
- 23. Sự khác nhau giữa java.lang.Math và java.lang.StrictMath là gì?
- 24. Sự khác nhau giữa static_cast và reinterpret_cast là gì?
- 25. Sự khác nhau giữa init() và window.init() là gì?
- 26. Sự khác nhau giữa fancyLocalization và preferredLanguage là gì?
- 27. Sự khác nhau giữa CreateObject và Wscript.CreateObject là gì?
- 28. Sự khác nhau giữa CellClick và CellMouseClick là gì?
- 29. Sự khác nhau giữa -0 và 0 là gì?
- 30. Sự khác nhau giữa TCHAR và WCHAR là gì?
Làm cách nào để bạn tạo một chương trình nhập dữ liệu vào cả Python 2 và Python 3 tương thích? –
Để thực hiện điều đó, bạn thử đặt 'input' thành' raw_input' và bỏ qua các lỗi tên. –
Tra cứu thư viện 'sáu' để tương thích với python 2 và 3. –