В чем разница между raw_input()
и input()
в Python 3?
python
python-3.x
input
pkumar
источник
источник
input
вraw_input
и игнорировать ошибки имен.Ответы:
Разница в том, что
raw_input()
не существует в Python 3.x, аinput()
существует. На самом деле староеraw_input()
было переименованоinput()
, а староеinput()
исчезло, но его можно легко смоделировать с помощьюeval(input())
. (Помните, чтоeval()
это зло. Попытайтесь использовать более безопасные способы анализа вашего ввода, если это возможно.)источник
raw_input
...?" - «Разница в том, что нетraw_input
». ... Я бы сказал, что это довольно радикальная разница!eval
(иexec
) в целом следует избегать, поскольку они могут представлять угрозу безопасности. За подробностями обращайтесь к Eval, который действительно опасен для SO ветеран Нед Бэтчелдер. И, конечно, этот совет относится и к старому Python 2input
.eval()
иexec()
, но сначала вы должны понять, почему вы не должны использовать,eval()
прежде чем принять решение использовать его.В Python 2 ,
raw_input()
возвращает строку, иinput()
пытается выполнить вход в качестве выражения Python.Поскольку получение строки почти всегда было тем, что вы хотели, Python 3 делает это с
input()
. Как говорит Свен, если вы когда-нибудь захотите старое поведение,eval(input())
работает.источник
raw_input()
.Python 2:
raw_input()
берет именно то, что набрал пользователь, и передает его обратно в виде строки.input()
сначала берет,raw_input()
а затем выполняетeval()
на нем также.Основным отличием является то, что
input()
ожидает синтаксически правильное выражение Python, гдеraw_input()
нет.Python 3:
raw_input()
был переименован в,input()
так что теперьinput()
возвращает точную строку.input()
был удален.Если вы хотите использовать старый
input()
, то есть вам нужно оценивать пользовательский ввод как оператор python, вы должны сделать это вручную, используяeval(input())
.источник
В Python 3
raw_input()
не существует, о чем уже упоминал Свен.В Python 2
input()
функция оценивает ваш ввод.Пример:
В приведенном выше примере Python 2.x пытается оценить harsha как переменную, а не строку. Чтобы избежать этого, мы можем использовать двойные кавычки вокруг нашего ввода, такие как "harsha":
сырой ввод()
Функция raw_input () `не оценивает, она просто читает все, что вы вводите.
Пример:
Пример:
В приведенном выше примере я просто пытался оценить пользовательский ввод с помощью
eval
функции.источник
Я хотел бы добавить немного больше деталей к объяснению, предоставленному всеми для пользователей Python 2 .
raw_input()
что, к настоящему времени, вы знаете, что оценивает любые данные, которые пользователь вводит как строку. Это означает, что python не пытается даже понять введенные данные снова. Все, что он примет во внимание, это то, что введенные данные будут строковыми, независимо от того, является ли это действительной строкой, или int, или чем-то еще.Хотя
input()
с другой стороны пытается понять данные, введенные пользователем. Таким образом, ввод вродеhelloworld
бы даже показывает ошибку как 'helloworld is undefined
'.В заключение, для python 2 , чтобы также ввести строку, вам нужно ввести ее как '
helloworld
', которая является общей структурой, используемой в python для использования строк.источник
Если вы хотите убедиться, что ваш код работает с python2 и python3, используйте функцию input () в вашем скрипте и добавьте это в начало вашего скрипта:
источник