Hallo zusammen,
%s udgl. Sind die nur dazu da, damit man Ausgaben gestalten kann, oder haben sie auch einen Sicherheitssinn?
Ich meine, weil ich genau festlegen kann, welcher Datentyp eingefügt werden kann.
Liebe Grüße
rolgal_reloaded
Formatierungsoperatoren
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Lies die Doku. %s konvertiert alles zu einem String, d.h. es kommt immer etwas heraus, es sei denn, __str__ wirft eine Exception.
Andere Typen, z.B. %i oder %f, lassen nur ints bzw. floats, oder was dazu konvertiert werden kann, zu.
Andere Typen, z.B. %i oder %f, lassen nur ints bzw. floats, oder was dazu konvertiert werden kann, zu.
-
- User
- Beiträge: 312
- Registriert: Dienstag 24. Oktober 2006, 19:31
...jaja, ist mir schon klar, die Frage galt dem Sinn der Operatoren.
rolgal_reloaded
rolgal_reloaded
Der Sinn ist zum einen dass man das Format noch etwas genauer angeben kann, zum Beispiel die Anzahl der (Nach)Kommastellen bei Fliesskommazahlen und zum anderen kann man ganze Sätze mit "Platzhaltern" versehen als *eine* literale Zeichenkette schreiben, was das übersetzen mittels `gettext` einfacher macht als wenn man den Text über mehrere Literale verteilt.
-
- User
- Beiträge: 312
- Registriert: Dienstag 24. Oktober 2006, 19:31
@BlackJack
...aber hat es auch einen Sinn bez. Sicherheit, weil man eben genau definieren kann welcher Datentyp eingesetzt werden muss?
LG
rolgal_reloaded
...aber hat es auch einen Sinn bez. Sicherheit, weil man eben genau definieren kann welcher Datentyp eingesetzt werden muss?
LG
rolgal_reloaded
Ich verstehe nicht so ganz was Du mit Sicherheit meinst!?
Die Umwandlung ist halt einfacher. Wenn Du zum Beispiel ein beliebiges Objekt als ganze Zahl formatieren willst, kannst Du entweder ``"%d" % obj`` oder ``str(int(obj))`` schreiben. Mit Formatoperator ist es kürzer und Du kannst noch zusätzliche Angaben zur Formatierung machen. Wenn `obj` sich nicht in eine ganze Zahl umwandeln lässt, dann gibt's in beiden Fällen die gleiche Ausnahme.
Die Umwandlung ist halt einfacher. Wenn Du zum Beispiel ein beliebiges Objekt als ganze Zahl formatieren willst, kannst Du entweder ``"%d" % obj`` oder ``str(int(obj))`` schreiben. Mit Formatoperator ist es kürzer und Du kannst noch zusätzliche Angaben zur Formatierung machen. Wenn `obj` sich nicht in eine ganze Zahl umwandeln lässt, dann gibt's in beiden Fällen die gleiche Ausnahme.
-
- User
- Beiträge: 312
- Registriert: Dienstag 24. Oktober 2006, 19:31
...egal, wenn ich es besser formulieren kann, melde ich mich nochmal.
Danke, einstweilen,
rolgal_reloaded
Danke, einstweilen,
rolgal_reloaded
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Der große Vorteil ist, das es einfach übersichtlicher ist
Wenn nun s nicht ein String ist, dann funktioniert die erste Variante nicht. Ob man damit irgendwelche Sicherheitslücken Produzieren kann, wage ich zu bezweifeln... Auf jeden Fall kommt es zu einem Traceback...
Code: Alles auswählen
# fahrlässig:
print "Bla Blub" + s + "blabla..."
#besser:
print "Bla Blub" + str(s) + "blabla..."
# besser + hübscher:
print "Bla Blub %s blabla..." % s