Alle Python-Argumente werden als Referenz übergeben

Es scheint. Ich wusste es nicht. Oder besser gesagt, es war mir eigentlich egal.

Ich dachte, dass int speziell behandelt und vom Standpunkt des Verhaltens als Wert übergeben wurde, aber es wurde als Referenz für "alle" übergeben.

Unten ist ein Experiment mit Ipython.

In [27]: i = 1

In [28]: id(i)
Out[28]: 140513240953112

In [29]: def func(a):
   ....:     print a, id(a)
   ....:     a += 1
   ....:     print a, id(a)
   ....:     return a
   ....: 

In [30]: b = func(i)
1 140513240953112	<-Bisher der gleiche Ort(id)Referenzierung
2 140513240953088 <-Ein anderer Ort hier(id)Kopiert nach

In [31]: id(b)
Out[31]: 140513240953088

Ein anderes Beispiel

In [32]: i = 1

In [33]: id(i)
Out[33]: 140513240953112

In [34]: def func(a):
   ....:     print a, id(a)
   ....:     return a
   ....: 

In [35]: b = func(i)
1 140513240953112

In [36]: id(b)
Out[36]: 140513240953112	<-Wieder der gleiche Ort wie ich(id)Referenzierung

In [37]: b
Out[37]: 1	<-Lesen vom selben Ort wie ich

In [38]: b += 2 <-Ein anderer Ort hier(id)Kopiert nach

In [39]: id(b)
Out[39]: 140513240953064 <-Sie sehen, es ist seltsam

Hallo. Das ist es.

Referenz

Impressionen

Als ich mich bemühte, mit Python abzustimmen, wurden die Referenzkosten über den Array-Index bis zum Ende zu einem Engpass. Wenn Sie mit Python vertraut sind, können Sie dies möglicherweise noch tun, aber es ist schneller, die Sprache zu ändern, als sich mit Python zu beschäftigen. Daher ist es notwendig, in den tiefen Teil von Python einzutauchen. Es gibt kein. Ich bin interessiert.

Als Option zum Ändern der Sprache gehe ich jetzt problemlos zu C / C ++, aber ich denke, es ist notwendig, die Go-Sprache reaktionsfähiger zu machen. Ich denke. Ja wirklich.

Ende.

Recommended Posts

Alle Python-Argumente werden als Referenz übergeben
Python> diese werden alle als falsch betrachtet:
Python> Wörterbuch> Werte ()> Alle Werte mithilfe von Werten abrufen ()
Informationen zur Python-Referenz
Python-Referenzseite
Führen Sie Power Query aus, indem Sie Argumente an Python übergeben
Was sind Python Taples und * Args?
Das von Python berechnete VIF und das von Excel berechnete VIF sind unterschiedlich.
Python-Standardargumente werden nicht bei jedem Aufruf initialisiert
Primzahlbeurteilung durch Python
Über Funktionsargumente (Python)
Visualisierungsnotiz von Python
Kommunikationsverarbeitung durch Python
Python-Klassen sind langsam
Python: Über Funktionsargumente
Übergeben von Wert, Übergeben von Referenz, Übergeben von Referenz,
Beamformer-Antwort von Python
Zusammenfassung der Python-Argumente
Über __all__ in Python
Stellen Sie sicher, dass alle Elemente in der Liste in Python identisch sind
Das zwölfte Offline-Echtzeit-Schreibreferenzproblem. Implementiert von Python