J'ai besoin de savoir ce que + = fait en python. C'est si simple. J'apprécierais également des liens vers des définitions d'autres outils à main courts en python.Que fait + = exactement en python?
Répondre
+=
ajoute une autre valeur à la valeur de la variable et affecte la nouvelle valeur à la variable.
>>> x = 3
>>> x += 2
>>> print x
5
-=
, *=
, /=
-t similaire pour la soustraction, la multiplication et la division.
"lui-même" est en fait une très mauvaise description ici, car les entiers sont immuables. – AndiDog
Il ajoute l'opérande de droite à gauche. x += 2
signifie x = x + 2
Il peut également ajouter des éléments à une liste - voir this SO thread.
+=
ajoute un nombre à une variable, en changeant la variable elle-même dans le processus (alors que +
ne le ferait pas). Semblable à cela, il y a les éléments suivants qui modifie également la variable:
-=
, soustraient une valeur de variable définissant la variable au résultat*=
, multiplie la variable et une valeur, ce qui rend le résultat du la variable/=
, divise la variable par la valeur, ce qui rend le résultat de la variable%=
, exécute le module de la variable, la variable étant alors réglé sur le résultat de celui-ci
Il peut y en avoir d'autres. Je ne suis pas un programmeur Python.
Pour les chiffres, cette réponse est correcte. (Voir [la réponse de Bryan] (https://stackoverflow.com/a/4845327/241211) pour un comportement spécial.) Il y a [en effet] (https://docs.python.org/3.1/library/operator.html# operator.iadd) plusieurs autres, y compris les opérateurs au niveau du bit ('& =', '>> =', etc.) et des opérateurs mathématiques supplémentaires ('** =', etc.). – Michael
En Python, + = est un revêtement de sucre pour la méthode spéciale __iadd__
, ou __add__
ou __radd__
si aucun __iadd__
n'est présent. La méthode __iadd__
d'une classe peut faire tout ce qu'elle veut. L'objet list 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 méthode spéciale __iadd__
. Vous initialisez l'objet avec un int, puis vous pouvez utiliser l'opérateur + = pour ajouter un nombre. J'ai ajouté une instruction d'impression dans __iadd__
pour montrer qu'il est appelé. En outre, __iadd__
devrait renvoyer un objet, donc j'ai renvoyé l'addition de lui-même plus l'autre nombre qui a du sens 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
Espérons que cela aide.
Bien que ce ne soit pas ce que recherchait l'Asker, +1 pour la vraie réponse. =) – Michael
@Michael, c'est là que l'humour ajoute au fait ... :-D –
Comme d'autres l'ont également dit, l'opérateur + = est un raccourci. Un exemple:
var = 1;
var = var + 1;
#var = 2
Il pourrait aussi être écrit comme ceci:
var = 1;
var += 1;
#var = 2
Ainsi, au lieu d'écrire le premier exemple, vous pouvez simplement écrire le second, qui fonctionne très bien.
Ce n'est pas un simple raccourci 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
Cela montre que + = appelle la méthode de la liste DSAI mais + invoque ajouter, qui font des choses différentes avec des listes.
x += 5
n'est pas exactement identique à dire x = x + 5
en Python.
Remarque 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: Why does += behave unexpectedly on lists?
Rappelez-vous quand vous avez utilisé pour résumer, par exemple 2 & 3, dans votre vieille calculatrice et chaque fois que vous appuyez sur la =
vous voyez 3 ajouté au total, le +=
fait un travail similaire. Exemple:
>>> orange = 2
>>> orange += 3
>>> print(orange)
5
>>> orange +=3
>>> print(orange)
8
+=
est juste un raccourci pour écrire
numbers = 1
numbers = numbers + 1
print (numbers) ## 2
Ainsi, au lieu que vous écririez
numbers = 1
numbers += 1
print (numbers) ## 2
Les deux voies sont correctes, mais par exemple deux, vous aide à écrire un peu moins code
- 1. Que fait exactement pygame.display.set_mode()?
- 2. Que fait exactement "#" en C?
- 3. Que fait exactement ListSelectionModel.insertIndexInterval()?
- 4. Que fait KeyListener exactement?
- 5. Que fait exactement pg_escape_string?
- 6. Que fait exactement @synthesize?
- 7. Que fait exactement FillMode?
- 8. Que fait #! Perl exactement?
- 9. Que fait exactement MIBCC.EXE?
- 10. Que fait exactement "synchroniser"?
- 11. Que fait exactement rangeOfCharacterFromSet?
- 12. Que fait exactement Panel.IsItemsHost?
- 13. Que fait exactement reloadData?
- 14. Que fait exactement visibleContentsAsDataURL?
- 15. Que fait exactement launch4j?
- 16. Que fait exactement `git push` en interne?
- 17. Que fait exactement System.Diagnostics.Process UseShellExecute?
- 18. Que fait exactement! Function ($) {...} (window.jQuery)?
- 19. Que fait exactement l'utilitaire "ar"?
- 20. Que fait exactement -march = natif?
- 21. WCF: Que fait exactement IsInitiating?
- 22. que fait exactement 'get_page_by_path' wordpress?
- 23. Que fait exactement => signifie?
- 24. Que fait exactement l'instruction BEQ?
- 25. Que fait exactement "printw"? (Ncurses)
- 26. Que fait exactement la méthode .join()?
- 27. que fait exactement Data-anchor-target?
- 28. Mvc OutputCacheLocation.ServerAndClient que fait-il exactement?
- 29. Que fait exactement "git remote add"?
- 30. Que fait exactement ce code ML standard?
['objet .__ iadd__'] (http: // doc s.python.org/reference/datamodel.html#object.__iadd__) – ephemient
c'est un opérateur de base pour python (et beaucoup d'autres langues aussi), vous devriez commencer par google, si vous ne lisez jamais de références python. – technomage
@AndiDog Bien qu'il soit vrai que les deux questions concernent l'opérateur (+ =), celui que vous avez lié concerne un usage sophistiqué et un problème subtil, et l'OP ici n'est probablement pas capable de suivre le raisonnement (encore). –