Exactement ce que fait += faire en python?
J'ai besoin de savoir ce que += n'en python. C'est aussi simple que cela. Je apprécieraient également des liens vers les définitions des autres manches d'outils à main en python.
object.__iadd__
- il est un opérateur de python (et beaucoup d'autres langues aussi), vous devriez commencer avec google, si vous ne lisez toutes les références python.
- Alors c'est vrai à la fois les questions sont sur le (+=) opérateur, celui que vous avez lié est sur un système sophistiqué de l'utilisation et subtile problème, et l'OP ici n'est probablement pas en mesure de suivre le raisonnement il y a (encore).
- Je prenais la question littéralement - il contient le mot "exactement". C'est pourquoi j'ai proposé l'autre question. Je pense que c'est tout à fait clair ce que
+=
fait, mais pas de la façon dont il fonctionne sous le capot. - Peut-être vous étiez à ce moment-là, mais en regardant les (presque) des solutions acceptées ici, il est clair que cette question est à propos d'une compréhension de base de l'opérateur 😀
- La plupart des sumbol utilise sont maintenant indexées dans la page des Symboles docs.python.org/3/genindex-Symbols.html.
Vous devez vous connecter pour publier un commentaire.
En Python, += est la couche de sucre pour la
__iadd__
méthode spéciale, ou__add__
ou__radd__
si__iadd__
n'est pas présent. Le__iadd__
méthode d'une classe peut faire ce qu'il veut. La liste objet implémente et l'utilise pour effectuer une itération sur un objet iterable objet ajoutant chaque élément de la même manière que la liste étendre la méthode.Ici est une simple classe qui implémente l'
__iadd__
méthode spéciale. Vous d'initialiser l'objet avec un int, alors vous pouvez utiliser l'opérateur += pour ajouter un numéro. J'ai ajouté une instruction print dans__iadd__
pour montrer qu'elle est appelée. Aussi,__iadd__
retour est prévu un objet, donc je suis retourné à l'ajout d'elle-même, plus le nombre d'autres qui fait sens dans ce cas.Espère que cette aide.
__iadd__
qui retourne un type différent (ce qui en soi est addable)+=
ajoute une autre valeur avec la valeur de la variable et affecte la nouvelle valeur à la variable.-=
,*=
,/=
n'similaire pour la soustraction, la multiplication et la division.+=
ajoute un nombre à une variable, la modification de la variable elle-même dans le processus (alors que+
ne serait pas). Semblable à cela, il y a la suite qui modifie également la variable:-=
, soustrait une valeur à partir d'une variable, la définition de la variable à la suite*=
, multiplie la variable et une valeur, les résultats de la variable/=
, divise la variable par la valeur, les résultats de la variable%=
, effectue le module sur la variable, la variable étant alors définie à la suite de celaIl peut y en avoir d'autres. Je ne suis pas un programmeur Python.
&=
,>>=
, etc.) et de supplémentaires de mathématiques opérateurs (**=
, etc.).x += 5
n'est pas exactement la même chose que de direx = x + 5
en Python.Note ici:
Voir pour référence: Pourquoi ne += se comporter de façon inattendue sur les listes?
Il ajoute l'opérande de droite à gauche.
x += 2
signifiex = x + 2
Il peut également ajouter des éléments à une liste -- voir ce fil.
Il n'est pas un simple raccourci syntaxique. Essayez ceci:
contre
Ce qui montre que += invoque le iadd méthode de la liste mais + invoque ajouter, qui font des choses différentes avec des listes.
Théoriquement a += b "ajoute" de b à stocker le résultat dans une. Cette description simpliste serait de décrire l'opérateur += dans de nombreuses langues.
Cependant la simple description soulève quelques questions.
En python les réponses à ces questions dépendent du type de données d'une.
Donc ce que signifie exactement ", ajoutant que" signifie?
Noter que pour les listes += est plus souple que le +, l'opérateur + sur une liste nécessite une autre liste, mais l'opérateur += acceptons n'importe quel itérable.
Donc, ce n'est "stocker la valeur dans une" signifie?
Si l'objet est mutable, alors il est recommandé (mais pas obligatoire) pour effectuer la modification sur place. Ainsi, un des points pour le même objet, il le faisait avant mais que l'objet a maintenant un contenu différent.
Si l'objet est immuable, alors il est évident qu'elle ne peut pas effectuer la modification sur place. Certains mutable objets peuvent également ne pas avoir une mise en œuvre d'une "ajouter" de l'opération . Dans ce cas, la variable "a" sera mis à jour pour pointer vers un nouvel objet contenant le résultat d'une opération d'addition.
Techniquement il est mis en œuvre par la recherche de
__IADD__
tout d'abord, si ce n'est pas mis en œuvre alors__ADD__
est essayé et finalement__RADD__
.De soins est nécessaire lors de l'utilisation += en python sur les variables pour lesquelles nous ne sommes pas certains de le type exact et, en particulier, où nous ne sommes pas certains si le type est mutable ou pas. Par exemple, considérons le code suivant.
Lorsque nous invoquons dostuff avec un n-uplet puis le n-uplet est copié dans le cadre de l' += opération et donc b n'est pas affectée. Toutefois, lorsque nous invoquons la liste la liste est modifiée, de sorte que a et b sont affectés.
En python 3, le même comportement est observé avec la "octets" et "bytearray" types.
Enfin, notez que la réaffectation se produit même si l'objet n'est pas remplacé. Cela n'a pas beaucoup d'importance si le côté gauche est simplement une variable, mais elle peut causer de la confusion comportement lorsque vous avez un immuable collection se référant à mutable collections par exemple:
Dans ce cas [5] va être ajoutée à la liste visée par un[0] mais alors, par la suite, une exception sera levée lorsque le code tente et échoue à réaffecter un[0].
est juste un raccourci pour l'écriture
Donc au lieu de vous écrire
Les deux façons sont corrects, mais l'exemple des deux vous permet d'écrire un peu moins de code
La réponse courte est
+=
peut être traduit comme "ajouter tout ce qui est à la droite de l' += pour la variable sur la gauche de l' +=".Ex. Si vous avez
a = 10
puisa += 5
serait:a = a + 5
Donc, "un" maintenant égal à 15.
Comme d'autres l'ont aussi dit, l'opérateur += est un raccourci.
Un exemple:
Il peut aussi être écrite comme suit:
Donc au lieu d'écrire le premier exemple, il vous suffit d'écrire la seconde, qui serait très bien fonctionner.
Rappelez-vous quand vous avez utilisé pour faire la somme, par exemple, 2 & 3, dans votre ancien calculateur et chaque fois que vous frappez la
=
vous voir 3 ajoutés au total, le+=
ne travail similaire. Exemple: