
Hallo,
Diez B. Roggisch schrieb:
Sicher? Hab grad folgendes im Interpreter getestet und es ging:
var=4 neueVar="(%s)" % var print neueVar
liefert "(4)"
Ich denke im Gegensatz zum einfachen Verketten von Strings, wendet die Substitution durchaus str() auf die Variablen an.
Mag sein das ich da etwas generalisiert habe. Das hier geht nämlich nicht
"%i" % "5"
TypeError: int argument required
Und str() kann ja auch uU nicht sein, was man wirklich haben möchte.
Tja, etwas Theorie und das Lesen Handbuchs machen das Leben klarer :-)
'%s' String (converts any python object using str()) '%r' String (converts any python object using repr()) '%i' Signed integer decimal.
Damit sollte klar sein, weshalb '%s'% 4 funktioniert und '%i' % "4" eben nicht.
Aber das geht auch: Eine Klasse, die __int__ unterstützt.
class I:
... def __init__(self, attr): ... self.attr = attr ... def __int__(self): ... return int(self.attr) ...
print '%i' % I("4")
4