Je suis assez expérimenté avec python, mais j'ai récemment essayé les exemples de tests de codilité et regardé les solutions que j'ai rencontrées - =, + = et ^ = et je ne peux pas comprendre ce qu'ils font, quelqu'un pourrait-il expliquer, et peut-être aussi un contexte dans lequel ils sont utilisés?
Merci!
Comme presque tous les langages modernes, python a Opérateurs d'affectation afin qu'ils puissent les utiliser chaque fois que vous souhaitez attribuer une valeur à une variable après avoir effectué une opération arithmétique ou logique, les deux (affectation et fonctionnement) sont exprimés de manière compacte dans une seule déclaration ....
Lorsque vous calculez X = X + Y, vous retournez en fait la somme de X et Y dans une nouvelle variable, qui, dans votre exemple, écrase la valeur précédente de X. Lorsque vous utilisez un opérateur d'affectation sous la forme de X + = 1 , la valeur 1 est directement additionnée à la valeur courante de X, sans renvoyer le résultat dans une nouvelle variable. Jetez un œil au code ci-dessous:
>>>V = np.arange(10)
>>>view = V[3:] #view is just a subspace (reference) of the V array
>>>print(V);print(view)
[0 1 2 3 4 5 6 7 8 9]
[3 4 5 6 7 8 9]
>>>view = view + 3 #add view to a constant in a new variable
>>>print(V);print(view)
[0 1 2 3 4 5 6 7 8 9]
[ 6 7 8 9 10 11 12]
>>>view = V[3:]
>>>view += 3 #here you actually modify the value of V
>>>print(V);print(view)
[ 0 1 2 6 7 8 9 10 11 12]
[ 6 7 8 9 10 11 12]
Vous pouvez également rechercher la documentation de numpy.ndarray.base pour vérifier si un tableau est réellement une référence d'un autre tableau.
J'espère que ça aide