input?
@jan.b: Die Antwort von snafu gilt für Python 2; in Python 3 wurde `raw_input` zu `input` umbenannt und gibt die Eingabe als String zurück. `input` aus Python 2 entfällt, weil es sowieso nicht benutzt wurde (bzw. werden sollte).
Ansonsten lohnt sich auch ein Blick in die Dokumentation:
Ansonsten lohnt sich auch ein Blick in die Dokumentation:
- `input` für Python 3
- `input` für Python 2
- `raw_input` für Python 2
Vermutlich war die Idee in einer frühen Python-Version wirklich mal, dass der Benutzer beliebigen Python-Code ausführen kann (schließlich verhält sich die Funktion ja genau so). Bis man dann gemerkt hat, dass beliebige (ungeprüfte) Eingaben ein hohes Sicherheitsrisiko für die Anwendung darstellen. Seitdem wird von input() (in Python 2) abgeraten und es wurde nur noch wegen der Kompatibilität zu älteren Versionen mitgeschleppt. Mit Python 3 hat man dies aufgegeben und input() ist nun wieder "sicher", weil es einfach einen String liefert. Grundsätzlich kann man den immer noch ungeprüft ausführen lassen, aber es ist für den unbedarften Programmierer nun schwieriger geworden. Und das neue Verhalten ist auch ansonsten das, was man eigentlich bei Benutzereingaben will.
Ein Beispiel für eine sicherlich unerwünschte Eingabe nach input() wäre __import__('shutil').rmtree('.'). Das würde dann im aktuellen Arbeitsverzeichnis alle Dateien samt Unterordner löschen, sofern das Programm entsprechende Rechte hat. Ist meistens nicht unbedingt im Sinne des Erfinders, sofern das Programm nicht nur zum selber benutzen gedacht ist.
Ein Beispiel für eine sicherlich unerwünschte Eingabe nach input() wäre __import__('shutil').rmtree('.'). Das würde dann im aktuellen Arbeitsverzeichnis alle Dateien samt Unterordner löschen, sofern das Programm entsprechende Rechte hat. Ist meistens nicht unbedingt im Sinne des Erfinders, sofern das Programm nicht nur zum selber benutzen gedacht ist.