Seite 1 von 1

Variablenzuweisung

Verfasst: Freitag 25. März 2011, 11:18
von Duesselentchen
Hello again liebe Forumsgemeide :)

Zur Variablenzuweisung in Python habe ich eine Frage. Vorher habe ich mich versucht bei Google schlau zu machen, dort habe ich aber nur eher allgemeine Erklärungen zu den Datentypen erhalten. Sollte mir jemand einen Tipp für einen besseren Suchbegriff geben oder einen Link geben können wäre ich auch schon glücklich.

Nun aber ersteinmal zu meiner Frage:
Normalerweise fügt man Variablen so ein:

Code: Alles auswählen

variable1 = 5
variable2 = 2
variable3 = variable1 + variable2
okay, soweit logisch.

Nun habe ich aber auch schon öfters ein Prozentzeichen zum Einfügen gefunden:
(hier als Beispiel von der Seite http://docs.python.org/library/email-examples.html)

Code: Alles auswählen

msg['Subject'] = 'The contents of %s' % textfile
Warum kann ich die Variable direkt hinter dem String einfügen?
Was habe ich für Vorteile von dem %?
Wie/wann/wo wendet man es an?

Bislang habe ich nur gefolgert, dass das s hinter %s wohl für string stehen muss.

Ich hoffe mir kann jemand helfen.
Danke schonmal im Vorraus für evtl. Hilfen.

Gruß,
Duesselentchen

Re: Variablenzuweisung

Verfasst: Freitag 25. März 2011, 11:31
von sparrow

Re: Variablenzuweisung

Verfasst: Freitag 25. März 2011, 11:32
von Pekh
Das sind zwei Paar Schuhe: Oben hast du einfache Zuweisungen an Variablen, mit denen du anschließend rechnest (also ihren Inhalt abrufst). Beim unteren Beispiel handelt es sich um das (ggf. modifizierte) Einfügen von Variableninhalten in Strings (in der alten Form). Das dazugehörige Suchwort wäre "String formatting".

Re: Variablenzuweisung

Verfasst: Freitag 25. März 2011, 11:32
von snafu
Das Stichwort zum Suchen lautet "String Formatting". ;)

Re: Variablenzuweisung

Verfasst: Freitag 25. März 2011, 12:18
von Duesselentchen
:D Danke für die Antworten - bin direkt mal dem Link gefolgt und habe mich somal über das String formatting schlau gemacht --> echt tolle Sache :)

Nun noch zwei Fragen dazu:
1. @Pekh: was meinst du mit "in der alten Form"?
2. (Die Frage bezieht sich nun nur auf die Strings):
Also kann ich es zur Vereinfachung vom casten nehmen?

Code: Alles auswählen

print "bla blub %s" % (2)
anstatt

Code: Alles auswählen

print "bla blub " + str(2)
oder gibt es da für Strings auch andere Vorteile?

Dankeschön :)

Re: Variablenzuweisung

Verfasst: Freitag 25. März 2011, 12:32
von snafu
Dies ist die neue Form, welche ab Python 3 ausschließlich genutzt wird. Ab Python 2.6. kann man sie parallel zur alten Form nutzen.

Re: Variablenzuweisung

Verfasst: Freitag 25. März 2011, 13:05
von BlackJack
@snafu: Mooooment -- der ``%``-Operator funktioniert auch noch unter Python3:

Code: Alles auswählen

Python 3.1.2 (r312:79147, Sep 27 2010, 09:45:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> '%s welt' % 'hallo'
'hallo welt'
@Duesselentchen: Ich würde es nicht "casten" nennen und es ist halt doch ein wenig anders als die Konkatenation von Zeichenketten. Die Platzhalter müssen ja nicht am Anfang oder am Ende der Zeichenkette stehen, sondern können mitten drin stehen. Es wird je nach Platzhalter in `str`, `int`, `float`, oder `repr` umgewandelt und man kann zusätzlich noch zum Beispiel die Breite, Ausrichtung, Füllzeichen, oder Vor- und Nachkommastellen angeben.

Re: Variablenzuweisung

Verfasst: Freitag 25. März 2011, 16:19
von Duesselentchen
@BlackJack: Okay, vielen Dank - ich meine es verstanden zu haben.

Diese neue Form ist mir noch nicht so ganz klar - da werde ich mich erst reinfinden müssen. Dennoch vielen Dank für den Hinweis, das es da was neues gibt. Dann werde ich, wenn ich drauf stoßen werde, nicht so überrascht sein ;)

Vielen Dank an alle Helfer!!!

Re: Variablenzuweisung

Verfasst: Freitag 25. März 2011, 16:31
von frabron
Das ist eigentlich nicht weiter schwierig :)

Code: Alles auswählen

# nach Position in der Funktion format()
>>> "{0} und {0} macht {1}".format("zwei", "vier")
'zwei und zwei macht vier'
>>>

# oder namensgebunden
>>> "{zwei} und {zwei} macht {vier}".format(vier="vier",zwei="zwei")
'zwei und zwei macht vier'
>>>
Das sind zumindest die Möglichkeiten, die ich immer nutze ...
Frank

Re: Variablenzuweisung

Verfasst: Freitag 25. März 2011, 16:43
von Duesselentchen
:D Hey, cool - Danke!!!!

Diese zwei Möglichkeiten sind echt nicht schwierig, hattest recht! :)

Gruß,
Duesselentchen