image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image

RS

Romullo Silva11/01/2024 04:15
Compartilhe

A curiosa história de raw_input()

  • #Python

Introdução:

Este artigo foi escrito para a competição de artigos técnicos lançada pela DIO.ME em sua plataforma na data 08/01/2024 com prazo final de submissão no dia 11/01/2024 às 14h. O regulamento especificava que deveríamos escolher apenas

um tópico de uma lista de palavras reservadas ou funções python. Dentre elas estava as funções builtin raw_input() e input(). Contudo como

escrever sobre apenas uma delas sem falar da outra é no mínimo uma curiosidade estranha.

Numa rápida consulta usando algum mecanismo de busca,o leitor irá descobrir que raw_input() virou input() a partir da versão 3.0 do python. Bastaria simplesmente repetir a mesma retórica dos tutorias listados no resultado da busca

pela máquina de busca utilizada ( no caso duckduckgo). Algo sem originalidade que não vale o esforço mesmo citando fontes para evitar o plágio, mesmo que o prêmio seja de R$500,00. 

Portanto nesse artigo irá citar a história da função raw_input() e input() nas versões 2.x e 3.x e apontar os registros históricos, o PEP no site oficial da linguagem python.

A Função :

A função raw_input() existe desde a versão 1.4 até a versão 2.7.18 com a funcionalidade de receber uma entrada bruta convertendo-a para string e cortando quebra de linha, sem avaliação, interpretação do conteúdo da entrada.

valor=raw_input('insira expressão numérica e veja que ela não será calculada,estamos no 2.x:\n')
print 'RESULTADO:\n'
print valor

Em execução :

insira expressão numérica e veja que ela não será calculada,estamos no 2.x:
7+8
RESULTADO:
7+8

Veja raw_input() nas referências oficial de python 1.4 :

image

https://docs.python.org/release/1.4/ref/ref8.html#HDR2

Veja raw_input() nas referências oficial de python 2.7.18 :

image

https://docs.python.org/2.7/library/functions.html?highlight=raw_input#raw_input

Para que a expressão numérica seja avaliada nas versões 1.x e 2.x se deve usar a função input().

valor=input('insira uma expressão numérica e veja o resultado, estamos em 2.x:\n")
print 'RESULTADO:\n'
print valor

Em execução:

insira uma expressão numérica e veja o resultado, estamos em 2.x:
7+8
RESULTADO:
15

A partir da versão 3.0 a função raw_input() foi renomeada para input() e para obter a interpretação de expressões é preciso compor a função eval() com input(), assim:

valor = eval(input("informe uma expressão:\n"))
print("Resultado:\n") 
print(valor)

Em execução:

Informe uma expressão:
4+10
Resultador:
14

A Curiosidade :

Guido Van Rouser seu artigo What is new in Python 3.0 anunciou várias mudanças na linguagem entre elas a PEP3111 (Python Enhanced Proposal).

https://docs.python.org/3/whatsnew/3.0.html

Ao acessar o link da PEP3111 o leitor irá se deparar com a curiosidade

de que a raw_input quase foi renomeada para ask(), ask_user(), get_string(), prompt(),read(),user_input(), get_response() . E que inicialmente simplesmente renomear para input() foi descartado pelo BNDF (Benevolent Dictador for Life) do Python, o Guido Van Rouser.

https://peps.python.org/pep-3111/

Nas referências do PEP3111 vemos a correspondência(email) de André Roberge preocupado com o aspecto educacional do uso de python para ensinar programação para iniciantes. Ele alertava que uma mudança para uma entrada de dados que envolvesse uso de import sys e explicar um sys.stdin.readline() era inadquequado para iniciantes, ele queria que o raw_imput() fosse ask_user()

ou user_input(). 

https://mail.python.org/pipermail/edu-sig/2006-September/006967.html

Sete dias(12/09/2006) depois vemos o Guido Van Rouser respondendo sobre o aspecto educacional e afirmando definitivamente que a input() interpretadora de expressões devia sumir e raw_input() devia ser renomeada e não achava interessante renomear para a input().

https://mail.python.org/pipermail/python-3000/2006-September/003589.html

No dia 22/12/2006 Guido descarta renomear a raw_imput() para readline(), por causa de já existir uma readline() que não faz strinp do "\n" , também descarta adotar ask() para não ter que renomear print pra say(). E termina avaliando que 

usar a composição da função eval() com raw_input() renomeada para input() não terá impacto sobre o velho uso de input() em ambiente python 2.x. 

https://mail.python.org/pipermail/python-3000/2006-September/003589.html

No dia seguinte ele bate o martelo decidindo que raw_imput() deve ser a função input() no python 3 que viria a ser lançado em 3 de dezembro de 2008

https://mail.python.org/pipermail/python-3000/2006-December/005257.html

Para consultar:

https://gvanrossum.github.io//

https://github.com/aroberge

https://www.python.org/doc/versions/

https://docs.python.org/release/1.4/ref/ref8.html#HDR2

https://docs.python.org/2.7/library/functions.html?highlight=raw_input#raw_input

https://docs.python.org/3/search.html?q=Raw_input

https://docs.python.org/3/whatsnew/3.0.html

https://docs.python.org/3/whatsnew/3.0.html?highlight=raw_input

https://docs.python.org/release/3.0/library/functions.html

https://docs.python.org/release/3.0/library/functions.html#input

https://peps.python.org/pep-3111/

https://mail.python.org/pipermail/python-3000/2006-December/005257.html

Compartilhe
Recomendados para você
Suzano - Python Developer
BairesDev - Machine Learning Practitioner
Santander - Cibersegurança #2
Comentários (0)