image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image

RS

Romullo Silva11/01/2024 04:15
Compartilhe

A curiosa história de raw_input()

    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
    Comentários (0)