В чем разница между raw_input()
и input()
в python3.x?
Какая разница между raw_input() и input() в python3.x?
Ответ 1
Разница в том, что raw_input()
не существует в Python 3.x, а input()
существует. На самом деле старый raw_input()
был переименован в input()
, а старый input()
пропал, но его легко смоделировать с помощью eval(input())
. (Помните, что eval()
- это зло. Попытайтесь использовать более безопасные способы анализа вашего ввода, если это возможно.)
Ответ 2
В Python 2, raw_input()
возвращает строку, а input()
пытается запустить ввод как выражение Python.
Так как получение строки было почти всегда то, что вы хотели, Python 3 делает это с input()
. Как говорит Свен, если вы когда-либо хотите старое поведение, eval(input())
работает.
Ответ 3
Python 2:
-
raw_input()
берет именно то, что пользователь вводил и передавал обратно в виде строки. -
input()
сначала беретraw_input()
, а затем выполняет такжеeval()
.
Основное отличие состоит в том, что input()
ожидает синтаксически корректного оператора python, где raw_input()
не работает.
Python 3:
-
raw_input()
был переименован вinput()
, поэтому теперьinput()
возвращает точную строку. - Старый
input()
удален.
Если вы хотите использовать старый input()
, то есть вам нужно оценить пользовательский ввод как инструкцию python, вам нужно сделать это вручную, используя eval(input())
.
Ответ 4
В Python 3, raw_input()
не существует, о котором уже упоминал Свен.
В Python 2 функция input()
оценивает ваш вход.
Пример:
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
В приведенном выше примере Python 2.x пытается оценить harsha как переменную, а не строку. Чтобы этого избежать, мы можем использовать двойные кавычки вокруг нашего ввода, такие как "harsha":
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
raw_input()
Функция raw_input() `не оценивает, она просто будет читать все, что вы введете.
Пример:
name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'
Пример:
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
В приведенном выше примере я просто пытался оценить вход пользователя с помощью функции eval
.
Ответ 5
Я хотел бы добавить немного больше подробностей к объяснению, представленному всеми пользователями python 2. raw_input()
, который, к настоящему времени, вы знаете, что оценивает, какие данные передаются пользователем в виде строки. Это означает, что python не пытается даже понять введенные данные снова. Все, что он будет учитывать, это то, что введенные данные будут строками, независимо от того, является ли она фактической строкой или int или что-то еще.
В то время как input()
, с другой стороны, пытается понять данные, введенные пользователем. Таким образом, вход, подобный helloworld
, даже покажет ошибку как "helloworld is undefined
".
В заключение, для python 2, чтобы ввести строку тоже, вам нужно ввести ее как 'helloworld
', которая является общей структурой, используемой в python для использования строк.
Ответ 6
Если вы хотите убедиться, что ваш код работает с python2 и python3, используйте функцию input() в вашем скрипте и добавьте это в начало вашего скрипта:
from sys import version_info
if version_info.major == 3:
pass
elif version_info.major == 2:
try:
input = raw_input
except NameError:
pass
else:
print ("Unknown python version - input function not safe")
Ответ 7
Оба они одинаковы, единственное отличие состоит в том, чтобы использовать их в своей соответствующей версии Python.
В python2:
raw_input(): он принимает именно тот тип пользователя и передает его как строковый объект.
input(): он принимает именно то, что используется, и затем преобразует тип введенного объекта. Пример. используется введенное [10,20,30], затем оно будет возвращаться как тип объекта списка.
В Python3:
input(): Это точно так же, как raw_input() в Python2.
eval (input()): Это точно так же, как input() в Python2.
Ответ 8
Python 2:
raw_input()
берет именно то, что набрал пользователь, и передает его обратно в виде строки. input()
сначала берет raw_input()
а затем выполняет eval()
для него. Это означает, что python автоматически определяет, ввели ли вы число, строку или даже список.
Python 3:
raw_input()
был переименован в input()
поэтому теперь input()
возвращает точную строку. Старый input()
был удален.
Если вы хотите использовать старый метод input()
, то есть вам нужно оценивать пользовательский ввод как оператор python, вы должны сделать это вручную, используя eval(input())
.