web-dev-qa-db-fra.com

^ =, - = et + = symboles en Python

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!

11
Mc Tor

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

enter image description here

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

0
Oliari