Il semble. Je ne savais pas. Ou plutôt, je m'en fichais vraiment.
Je pensais que int était traité spécialement et passé par valeur du point de vue du comportement, mais il était passé par référence pour "all".
Voici une expérience avec 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 <-Même endroit jusqu'à présent(id)Référencement
2 140513240953088 <-Un autre endroit ici(id)Copié dans
In [31]: id(b)
Out[31]: 140513240953088
Un autre exemple
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 <-Encore une fois au même endroit que je(id)Référencement
In [37]: b
Out[37]: 1 <-Lecture depuis le même endroit que je
In [38]: b += 2 <-Un autre endroit ici(id)Copié dans
In [39]: id(b)
Out[39]: 140513240953064 <-Tu vois, c'est étrange
Hey. Voilà ce que c'est.
Quand j'ai essayé de m'accorder avec python, le coût de référence via l'index Array est devenu un goulot d'étranglement jusqu'à la fin. Eh bien, si vous êtes familier avec python, vous pourrez peut-être toujours le faire, mais il est plus rapide de changer de langage que d'essayer dur avec python, il est donc nécessaire de plonger dans la partie profonde de python. Il n'y a pas. Je suis intéressé.
En tant qu'option pour changer de langue, je passe facilement en C / C ++ maintenant, mais je pense qu'il est nécessaire de rendre le langage Go plus réactif. Je pense. vraiment.
fin.
Recommended Posts