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.
Warum gibt es überhaupt input, wenn es nichts anderes als eval(raw_input(prompt)) ist?
Das kann man doch eigentlich nie brauchen! Und selbst wenn, könnte man die zwei Befehle auch selber kombinieren...
Ich finde das Konzeptionell nicht wirklich gelungen... Verleitet es doch IMHO gerade Einsteiger dazu input zu verwenden, weil es naheliegender als raw_input ist... Keine Frage, das input() eine riesen Sicherheitslücke durch eval() aufreist
Zuletzt geändert von jens am Freitag 3. März 2006, 15:00, insgesamt 1-mal geändert.
raw_input() ist noch ein bisschen was anderes als sys.stdin.readline(), da man bei letzterem keinen Prompt angibt, sondern einfach direkt eine Zeile von stdin liest. Ich finds persönlich unproblematisch die Unterscheidung zu lassen.
input() gehört aber definitiv in die Tonne, ja. Das macht viel zu viele Dinge die nicht einsichtig sind, und wenn's jemand umbedingt braucht dann kann er das ganze mittels sys._getframe(), eval() und raw_input() duplizieren.
jens hat geschrieben:Warum gibt es überhaupt input, wenn es nichts anderes als eval(raw_input(prompt)) ist?
Das kann man doch eigentlich nie brauchen! Und selbst wenn, könnte man die zwei Befehle auch selber kombinieren...
Ich finde das Konzeptionell nicht wirklich gelungen... Verleitet es doch IMHO gerade Einsteiger dazu input zu verwenden, weil es naheliegender als raw_input ist...
eval ist aber auch pure evil....
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
Ja, auch ich war vor kurzem auf input reingefallen . Danke @BlackJack für die Aufklärung.
..."Und anstelle von `input()` solltest Du `raw_input()` nehmen. Sonst könnte der Anwender auch sowas wie "os.remove('wichtige_datei.txt')" eingeben. Das wird bei `input()` dann ausgeführt!"...
Wenn Python schon recht einfach ist, warum haben die sich grad hier´n Bein gestellt
Wenn Python schon recht einfach ist, warum haben die sich grad hier´n Bein gestellt
Erstens: weil eval() durchaus seine Daseinsberechtigung hat, genauso wie exec, genauso wie input() das hatte.
Zweitens: weil input aus einer Zeit stammt in der Python nicht als Allround-Sprache gedacht war, sondern als Shell-Ersatz eines verteilten Betriebssystems (nämlich ABC, an dem GvR in Holland am CNRI gearbeitet hat). Und man es genauso wie das Keyword print (was auch aus jener Zeit stammt) der Rückwärtskompatibilität wegen behalten hat.