input?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
jan.b
User
Beiträge: 195
Registriert: Mittwoch 9. August 2017, 17:12

was ist der unterschied zwischen input, und raw input?
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

input() interpretiert die Benutzereingabe so als wenn man sie direkt im Interpreter eingibt. Probier mal, was passiert wenn du nach einem input() die Eingabe 1+1 machst.
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

@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:
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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. ;)
Antworten