Attualmente insegno python agli studenti universitari del primo anno e sono stato sorpreso di apprendere che la funzione apparentemente innocua input
, che alcuni dei miei studenti avevano deciso di utilizzare (e che erano confusi dal comportamento strano), nascondeva una chiamata allo eval
dietro esso.È sempre utile usare l'input di Python su raw_input?
Quindi la mia domanda è, perché il input
funzione di chiamata eval
, e che cosa sarebbe questo mai essere utile per che non sarebbe stato più sicuro a che fare con raw_input
? Capisco che questo è stato cambiato in Python 3, ma sembra una decisione di design inusuale in primo luogo.
Python 2.x input function documentation
È utile per il codice-golf –
Per rispondere al "perché", il primo REPL di Python potrebbe essere stato "while 1: print input()'. Scommetto che in quel periodo antico, il supporto alle buone pratiche di programmazione non era così alto nella lista delle priorità di Python come lo è ora. Python 3's 'while True: print (eval (input()))' potrebbe anche sembrare più confuso - tutte quelle parentesi annidate! –