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.
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