J'ai besoin de savoir ce que +=
fait en Python. C'est aussi simple que cela. J'apprécierais également des liens vers des définitions d'autres outils de sténographie en Python.
C'est la même chose, cependant, sauf pour le cas bizarre x += 7,8,9
J'ai besoin de savoir ce que +=
fait en Python. C'est aussi simple que cela. J'apprécierais également des liens vers des définitions d'autres outils de sténographie en Python.
En Python, += est l'enrobage de sucre pour la fonction __iadd__
méthode spéciale, ou __add__
o __radd__
si __iadd__
n'est pas présent. Le site __iadd__
d'une classe peut faire tout ce qu'elle veut. L'objet liste l'implémente et l'utilise pour itérer sur un objet itérable en ajoutant chaque élément à lui-même de la même manière que la méthode extend de la liste.
Voici une classe personnalisée simple qui implémente la fonction __iadd__
méthode spéciale. Vous initialisez l'objet avec un int, puis vous pouvez utiliser l'opérateur += pour ajouter un nombre. J'ai ajouté une instruction print dans __iadd__
pour montrer qu'il est appelé. Aussi, __iadd__
est censé retourner un objet, donc j'ai retourné l'addition de lui-même plus l'autre nombre, ce qui est logique dans ce cas.
>>> class Adder(object):
def __init__(self, num=0):
self.num = num
def __iadd__(self, other):
print 'in __iadd__', other
self.num = self.num + other
return self.num
>>> a = Adder(2)
>>> a += 3
in __iadd__ 3
>>> a
5
J'espère que cela vous aidera.
x += 5
n'est pas exactement la même chose que de dire x = x + 5
en Python.
Notez ici :
In [1]: x = [2, 3, 4]
In [2]: y = x
In [3]: x += 7, 8, 9
In [4]: x
Out[4]: [2, 3, 4, 7, 8, 9]
In [5]: y
Out[5]: [2, 3, 4, 7, 8, 9]
In [6]: x += [44, 55]
In [7]: x
Out[7]: [2, 3, 4, 7, 8, 9, 44, 55]
In [8]: y
Out[8]: [2, 3, 4, 7, 8, 9, 44, 55]
In [9]: x = x + [33, 22]
In [10]: x
Out[10]: [2, 3, 4, 7, 8, 9, 44, 55, 33, 22]
In [11]: y
Out[11]: [2, 3, 4, 7, 8, 9, 44, 55]
Voir pour référence : Pourquoi += se comporte-t-il de manière inattendue sur les listes ?
En outre, l'un des fils de discussion liés fournit une bonne discussion sur les différences exactes. stackoverflow.com/questions/6951792/
+=
ajoute un nombre à une variable, modifiant la variable elle-même dans le processus (alors que +
ne le ferait pas). Dans le même ordre d'idées, il existe les éléments suivants qui modifient également la variable :
-=
soustrait une valeur d'une variable, en donnant à la variable la valeur du résultat.*=
multiplie la variable et une valeur, faisant du résultat la variable./=
divise la variable par la valeur, ce qui fait du résultat la variable.%=
effectue un modulus sur la variable, la variable étant ensuite définie comme le résultat de ce modulus.Il y en a peut-être d'autres. Je ne suis pas un programmeur Python.
Il ne s'agit pas d'un simple sucre syntaxique. Essayez ceci :
x = [] # empty list
x += "something" # iterates over the string and appends to list
print(x) # ['s', 'o', 'm', 'e', 't', 'h', 'i', 'n', 'g']
contre
x = [] # empty list
x = x + "something" # TypeError: can only concatenate list (not "str") to list
El +=
invoque l'opérateur __iadd__()
tandis que la méthode de liste +
on invoque le __add__()
un. Ils font des choses différentes avec les listes.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
7 votes
object.__iadd__
2 votes
C'est un opérateur de base pour python (et beaucoup d'autres langages aussi), vous devriez commencer avec google, si vous n'avez jamais lu de références sur python.
3 votes
@AndiDog Bien qu'il soit vrai que les deux questions portent sur l'opérateur (+=), celle que vous avez liée concerne un usage sophistiqué et un problème subtil, et le PO ici n'est probablement pas en mesure de suivre le raisonnement (encore).
0 votes
@belisarius : Je prenais la question littéralement - elle contient le mot "exactement" . C'est pourquoi j'ai suggéré l'autre question. Je pense que c'est tout à fait clair ce que
+=
mais pas comment il fonctionne sous le capot.3 votes
@AndiDog Peut-être aviez-vous raison à ce moment-là, mais en regardant les solutions (presque) acceptées ici, il est clair que cette question concerne une compréhension de base de l'opérateur :D
1 votes
La plupart des utilisations de sumbol sont maintenant indexées dans la page des symboles. docs.python.org/3/genindex-Symboles.html .