Was bedeutet += bedeutet in Python?
Sehe ich code, wie dies zum Beispiel in Python:
if cnt > 0 and len(aStr) > 1:
while cnt > 0:
aStr = aStr[1:]+aStr[0]
cnt += 1
Was bedeutet die +=
bedeuten?
InformationsquelleAutor | 2009-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
a += b
ist im wesentlichen der gleiche wiea = a + b
Ausnahme, dass:+
gibt immer eine neu zugewiesene Objekt, aber+=
sollte (muss aber nicht) ändern Sie das Objekt in-place, wenn es Mutationen (z.B.list
oderdict
, aberint
undstr
sind unveränderlich).a = a + b
,a
ist zweimal beurteilt.http://docs.python.org/reference/simple_stmts.html#augmented-assignment-statements
Wenn dies das erste mal, wenn Sie auf die
+=
Betreiber, Sie Fragen sich vielleicht, warum es wichtig ist, dass es möglicherweise ändern Sie das Objekt in-place-statt ein neues bauen. Hier ist ein Beispiel:+=
.klar, wenn ein Objekt nicht unterstützt +=, in-place-änderung nicht auftreten 🙂 Der subtile Punkt ist, es gibt keine Garantie, dass ein veränderliches Objekt unterstützt += in-place-änderung - vorsichtig-code vermeiden, sich auf diese, außer wo es explizit dokumentiert ist.
Ich editiert, um es klarer.
Hinzugefügt ein Beispiel.
Ich habe immer, obwohl die in-place-änderung unnötig verwirrend.
InformationsquelleAutor Bastien Léonard
ist in diesem Fall das gleiche wie
In diesem Fall die cnt += 1 bedeutet, dass die cnt um eins erhöht wird.
Beachten Sie, dass der code, den Sie eingefügt wird, Endlosschleife, wenn cnt > 0 und len(aStr) > 1.
Bearbeiten: Zitat Carl Meyer: `[..] die Antwort ist irreführend meist korrekt. Es ist ein feiner, aber sehr bedeutender Unterschied zwischen + und +=, siehe Bastien ' s Antwort.".
Funktioniert es bei anderen Anbietern auch. Sie tun können, x -= 1; y *= 3; z /= 10; cnt += 1; könnte als ordentlicher als die cnt = cnt + 1; wo gibt es mehr Raum für die Tippfehler 😉
"Ist das gleiche wie" ist nicht ganz korrekt. Siehe Bastien ' s Antwort
Ein downvote bedeutet, dass eine Antwort NICHT hilfreich ist, was dieser ist. Sie downvoted es nur, weil er nicht die link zu den docs?
1, weil die Antwort ist irreführend meist korrekt. Es ist ein feiner, aber sehr bedeutender Unterschied zwischen + und +=, siehe Bastien Antwort.
InformationsquelleAutor Stephan202
Google "python + = - operator' führt Sie zu http://docs.python.org/library/operator.html
Suche nach += sobald die Seite geladen für eine detaillierte Antwort.
und haben ihn wieder für 'was-ist -=?' 'was ist *=?' 🙂 Nein danke. Sowieso die top gestimmt und haben das bereits getan, bevor ich gepostet.
+1 für die Bereitstellung der Verbindung (hilfreich), aber -1 für nicht zusammenfassen, was Sie getan haben könnte in einem Satz. Net: 0
InformationsquelleAutor
FYI: wie es aussieht, haben Sie möglicherweise eine Endlosschleife, in deinem Beispiel...
cnt
ist größer als 0cnt
ist größer als 0cnt
1Das Ergebnis ist, dass
cnt
wird immer größer als 0 und die Schleife wird nie verlassen.Python Griffe überlaufen automatisch. Getestet mit Python 2.5: sys.maxint + 1 == 2147483648L und isinstance(sys.maxint + 1, int) == False. Ab Python 3.0 die Unterscheidung zwischen int und long ist auch verschwunden (nicht mehr lange, int ist ein "bignum').
(Natürlich nicht auf 64bit haben wir sys.maxint + 1 == 9223372036854775808L, aber der Punkt ist, dass das Ergebnis wird automatisch in lang)
InformationsquelleAutor STW
+=
ist die in-place-Additions-operator.Es ist dasselbe wie
cnt = cnt + 1
. Zum Beispiel:Dem-operator wird Häufig in ähnlicher Weise verwendet, um die
++
- operator in C-ähnlichen Sprachen, die zum Inkrementieren einer variable, indem man in einer Schleife (i += 1
)Gibt es ähnliche operator für Subtraktion/Multiplikation/division/macht und andere:
Den
+=
- operator funktioniert auch bei strings, zum Beispiel:Menschen neigen dazu abgeraten, dies zu tun für die Leistung der Vernunft, aber für die meisten Skripte ist das wirklich kein Problem. Zitat aus der "Sequenztyp" docs:
Den str.join () - Methode bezieht sich auf die folgenden:
..statt dem offensichtlichen:
Das problem mit dem höher ist (abgesehen von den führenden Leerzeichen), abhängig von der Python-Implementierung der Python-interpreter wird eine neue Kopie des Strings im Speicher jedes mal, wenn Sie append (denn strings sind immutable), die bekommen immer langsamer, je länger die Schnur zum Anhängen ist.. in der Erwägung, dass das Anhängen an eine Liste, dann einen Beitritt zusammen in einen string ist eine gleichbleibende Geschwindigkeit (unabhängig von der Implementierung)
Wenn du tust basic-string-manipulation, nicht darum kümmern. Wenn Sie eine Schleife, die ist im Grunde nur anfügen eine Zeichenfolge, betrachten Sie die Konstruktion eines Arrays, dann
"".join()
'ing.InformationsquelleAutor dbr
es bedeutet "append "DIESER" auf den aktuellen Wert"
Beispiel:
a = "Hallo";
a += "Welt";
drucken jetzt erfolgt die Ausgabe: "hello world"
Bitte, für die Liebe des Satans, nicht nur das Gebäude strings. StringIO und cStringIO sind hier für diesen Zweck.
Gebäude strings: "".join( ITERABLE_OF_STRINGS ) auch gut führt.
Es bedeutet "Anhängen", wenn strings.. "".join() ist besser ausführen, aber es ist dumm, zu verwenden, die für eine kurze strings, wie in dem Beispiel. Verwenden Sie "".join() wenn concat ' Ing-strings in einer Schleife, aber für one-of verwendet, += ist in Ordnung
InformationsquelleAutor VeeBee