Qual é a diferença entre raw_input()
e input()
no Python 3?
python
python-3.x
input
pkumar
fonte
fonte
input
araw_input
e ignorar erros de nome.Respostas:
A diferença é que
raw_input()
não existe no Python 3.x, enquanto existeinput()
. Na verdade, o antigoraw_input()
foi renomeado parainput()
e o antigoinput()
se foi, mas pode ser facilmente simulado usandoeval(input())
. (Lembre-se de que issoeval()
é mau. Tente usar maneiras mais seguras de analisar sua opinião, se possível.)fonte
raw_input
...?" - "A diferença é que não háraw_input
." ... Uma diferença drástica, eu diria!eval
(eexec
) geralmente deve ser evitado, porque eles podem ser um risco à segurança. Para detalhes, consulte Eval é realmente perigoso pelo veterano do SO Ned Batchelder. E é claro que esse conselho também se aplica ao antigo Python 2input
.eval()
eexec()
, mas primeiro você precisa entender por que não usareval()
antes de decidir usá-lo.No Python 2 ,
raw_input()
retorna uma string einput()
tenta executar a entrada como uma expressão Python.Como obter uma string quase sempre era o que você queria, o Python 3 faz isso
input()
. Como diz Sven, se você quiser o comportamento antigo,eval(input())
funciona.fonte
raw_input()
.Python 2:
raw_input()
pega exatamente o que o usuário digitou e passa de volta como uma string.input()
primeiro pega oraw_input()
e depois executa umeval()
nele também.A principal diferença é que
input()
espera uma declaração python sintaticamente correta, onderaw_input()
não.Python 3:
raw_input()
foi renomeado parainput()
agorainput()
retorna a string exata.input()
foi removido.Se você deseja usar o antigo
input()
, o que significa que você precisa avaliar uma entrada do usuário como uma instrução python, é necessário fazê-lo manualmente usandoeval(input())
.fonte
No Python 3,
raw_input()
não existe o que já foi mencionado por Sven.No Python 2, a
input()
função avalia sua entrada.Exemplo:
No exemplo acima, o Python 2.x está tentando avaliar harsha como uma variável e não como uma string. Para evitar isso, podemos usar aspas duplas em torno de nossa entrada como "harsha":
raw_input ()
A função raw_input () `não avalia, apenas lê o que você digita.
Exemplo:
Exemplo:
No exemplo acima, eu estava apenas tentando avaliar a entrada do usuário com a
eval
funçãofonte
Gostaria de adicionar um pouco mais de detalhes à explicação fornecida por todos para os usuários do python 2 .
raw_input()
, que, a essa altura, você sabe que avalia os dados inseridos pelo usuário como uma sequência. Isso significa que o python nem tenta entender os dados inseridos novamente. Tudo o que consideraremos é que os dados inseridos serão string, independentemente de ser uma string ou int real ou algo assim.Enquanto,
input()
por outro lado, tenta entender os dados inseridos pelo usuário. Assim, a entrada likehelloworld
mostraria o erro como 'helloworld is undefined
'.Concluindo, para o python 2 , para inserir uma string também, é necessário inseri-la como '
helloworld
', que é a estrutura comum usada no python para usar strings.fonte
Se você deseja garantir que seu código esteja sendo executado com python2 e python3, use a função input () no seu script e adicione-a ao início do seu script:
fonte