[Memo] Das Geheimnis kumulativer Zuweisungsanweisungen in Python-Funktionen

Was ist eine kumulative Zuweisungsanweisung?

Kumulative Zuweisungsanweisung

Die kumulative Zuweisungsanweisung ist eine Kombination aus binären Operationen und Zuweisungsanweisungen in einer einzigen Anweisung.

Geheimnis

>>> a = 1
>>> a = a + 1   
>>> a
2
>>> a = 1
>>> def f():
...     b = a + 1
... 	return b
... 
>>> f()
2
>>> a = 1
>>> def f():
... 	a = a + 1
... 	return a
... 
>>> f()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in f
UnboundLocalError: local variable 'a' referenced before assignment

Nachtrag 1

>>> a = 1
>>> def f():
... 	global a
... 	a = a + 1
... 	return a
...  
>>> f()
2

Nachtrag 2 Das Rätsel lösen

Warum erhalte ich einen UnboundLocalError, wenn eine Variable einen Wert hat?

Demnach scheint es so erklärt zu werden.

Dies liegt daran, dass beim Zuweisen zu einer Variablen innerhalb eines Bereichs diese Variable für diesen Bereich lokal wird und die gleichnamige Variable im äußeren Bereich verbirgt.

Vielen Dank an @gotta_dive_into_python

Nachtrag 3 Und zu einem neuen Geheimnis

Ich experimentiere damit, dass "beim Zuweisen zu einer Variablen in einem bestimmten Bereich diese Variable für diesen Bereich lokal wird" und dass es dasselbe ist, das in "local ()" usw. registriert ist. In meinem Haus gibt es noch ein anderes Geheimnis.

>>> def f():
... 	a = locals()
... 	return a
... 
>>> f()
{}
>>> def f():
... 	a = locals()
... 	b = 1
... 	return a
... 
>>> f()
{}
>>> def f():
... 	a = locals()
... 	b = locals()
... 	return a
... 
>>> f()
{'a': {...}}

Recommended Posts

[Memo] Das Geheimnis kumulativer Zuweisungsanweisungen in Python-Funktionen
Überprüfen Sie das Verhalten des Zerstörers in Python
Zusammenfassung verschiedener for-Anweisungen in Python
Das Ergebnis der Installation von Python auf Anaconda
Grundlagen zum Ausführen von NoxPlayer in Python
Auf der Suche nach dem schnellsten FizzBuzz in Python
Geben Sie die Anzahl der CPU-Kerne in Python aus
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Holen Sie sich den Aufrufer einer Funktion in Python
Passen Sie die Verteilung jeder Gruppe in Python an
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Kopieren Sie die Liste in Python
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Die Geschichte des Lesens von HSPICE-Daten in Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Lösen von Bewegungsgleichungen in Python (odeint)
Ausgabe in Form eines Python-Arrays
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
[Python] Memo über Funktionen
der Zen von Python
# 4 [Python] Grundlagen der Funktionen
Erleben Sie die gute Berechnungseffizienz der Vektorisierung in Python
Das einfachste Python-Memo in Japan (Klassen und Objekte)
So ermitteln Sie die Anzahl der Stellen in Python
[Python] Ruft die Liste der im Modul definierten Klassen ab
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
Der Schmerz von gRPC mit Python. November 2019. (Persönliches Memo)
Lernen Sie das Entwurfsmuster "Chain of Responsibility" in Python
Implementieren Sie die Lösung der Riccati-Algebra in Python
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
Den Inhalt der Daten in Python nicht kennen
Reproduzieren Sie das Ausführungsbeispiel von Kapitel 4 von Hajipata in Python
Verwenden wir die offenen Daten von "Mamebus" in Python
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Heap Sort Edition)
[Python] Gibt alle Kombinationen von Elementen in der Liste aus
Rufen Sie die URL des HTTP-Umleitungsziels in Python ab
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Reproduzieren Sie das Ausführungsbeispiel von Kapitel 5 von Hajipata in Python
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Überprüfen Sie die atrophische Natur der Wahrscheinlichkeitsverteilung in Python
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen
Ssh-Verbindungsnotiz mit ProxyCommand von ssh_config in Python
Ein Hinweis, der einen Job in Python implementiert, der eine GCS-Datei in BigQuery lädt
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Auf dem Weg zum Ruhestand von Python2
Lassen Sie uns das Ausführungsergebnis des Programms mit C ++, Java, Python messen.
Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
Finde Fehler in Python
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Berechnen Sie mit Python Millionen von Stellen in der Quadratwurzel von 2
Lassen Sie das Gleichungsdiagramm der linearen Funktion in Python zeichnen
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Bubble Sort)
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste