Различия между `input` и` raw_input`

python

29816 просмотра

3 ответа

В учебнике я прочитал, что есть разница между inputи raw_input. Я обнаружил, что они изменили поведение этих функций в Python 3.0. Каково новое поведение?

И почему в консоли интерпретатора Python это

x = input()

Отправляет сообщение об ошибке, но если я помещаю его в файл file.py и запускаю, это не так?

Автор: Guillermo Siliceo Trueba Источник Размещён: 12.11.2019 09:19

Ответы (3)


17 плюса

Решение

В Python 2.x raw_input()возвращает строку и input()оценивает ввод в контексте выполнения, в котором она вызывается

>>> x = input()
"hello"
>>> y = input()
x + " world"
>>> y
'hello world'

В Python 3.x inputбыла отменена и функция, ранее известная как raw_inputсейчас input. Таким образом, вы должны вручную позвонить, compileа затем, evalесли вы хотите старый функционал.

python2.x                    python3.x

raw_input()   --------------> input()               
input()  -------------------> eval(input())     

В 3.x вышеупомянутая сессия идет так

>>> x = eval(input())
'hello'
>>> y = eval(input())
x + ' world'
>>> y
'hello world'
>>> 

Таким образом, вы, вероятно, получили ошибку в интерпретаторе, потому что вы не помещали кавычки вокруг своего ввода. Это необходимо, потому что это оценивается. Откуда вы получаете ошибку имени?

Автор: aaronasterling Размещён: 27.09.2010 03:12

3 плюса

input () против raw_input ()

raw_input собирает символы, которые вводит пользователь, и представляет их в виде строки. input () не только оценивает числа, но и обрабатывает любой ввод как код Python и пытается его выполнить. Знающий, но злонамеренный пользователь может ввести команду Python, которая может даже удалить файл. Придерживайтесь raw_input () и преобразуйте строку в нужный вам тип данных, используя встроенные в Python функции преобразования.

Кроме того, input () не является безопасным от ошибок пользователя! Ожидается допустимое выражение Python в качестве входных данных; если входные данные не являются синтаксически допустимыми, возникает синтаксическая ошибка.

Автор: Blueice Размещён: 19.12.2010 12:51

3 плюса

Это просто:

  1. raw_input() возвращает строковые значения
  2. пока input()возвращаем целочисленные значения

Например:

1.

x = raw_input("Enter some value = ")
print x

Выход:

Enter some value = 123
'123'

2.

y = input("Enter some value = ") 
print y

Выход:

Enter some value = 123
123

Следовательно, если мы выполним, x + x =он выведет как 123123

в то время как если мы выполним y + y =это выдаст как 246

Автор: aniketectech Размещён: 18.11.2013 03:06
Вопросы из категории :
32x32