Necesito saber qué + = hace en python. Es así de simple. También agradecería los enlaces a definiciones de otras herramientas de mano cortas en python.¿Qué hace exactamente + = do en python?
Respuesta
+=
agrega otro valor con el valor de la variable y asigna el nuevo valor a la variable.
>>> x = 3
>>> x += 2
>>> print x
5
-=
, *=
, /=
hace similar para la resta, multiplicación y división.
"sí mismo" es en realidad una descripción muy mala aquí, ya que los enteros son inmutables. – AndiDog
Agrega el operando derecho a la izquierda. x += 2
significa x = x + 2
También puede agregar elementos a una lista - ver this SO thread.
+=
agrega un número a una variable, cambiando la variable en sí en el proceso (mientras que +
no). Similar a esto, existen los siguientes que también modifica la variable:
-=
, resta un valor de la variable, estableciendo la variable al resultado*=
, multiplica la variable y un valor, por lo que el resultado de la variable de/=
, divide la variable por el valor, por lo que el resultado de la variable%=
, lleva a cabo el módulo de la variable, con la variable luego ser ajustado en el resultado de que
Puede haber otros. No soy un programador de Python.
Para los números, esta respuesta es correcta. (Ver [respuesta de Bryan] (https://stackoverflow.com/a/4845327/241211) para un comportamiento especial.) Hay [de hecho] (https://docs.python.org/3.1/library/operator.html# operator.iadd) varios otros, incluyendo operadores bit a bit ('& =', '>> =', etc.) y operadores matemáticos adicionales ('** =', etc.). – Michael
En Python, + = es recubrimiento de azúcar para el método especial __iadd__
, o __add__
o __radd__
si __iadd__
no está presente. El método __iadd__
de una clase puede hacer lo que quiera. El objeto list lo implementa y lo usa para iterar sobre un objeto iterable que se agrega a cada elemento de la misma manera que lo hace el método extend de la lista.
Aquí hay una clase personalizada simple que implementa el método especial __iadd__
. Inicializas el objeto con un int, luego puedes usar el operador + = para agregar un número. He agregado una declaración de impresión en __iadd__
para mostrar que se llama. Además, se espera que __iadd__
devuelva un objeto, por lo que devolví la adición de sí mismo más el otro número que tiene sentido en este caso.
>>> 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
Espero que esto ayude.
Si bien esto no es lo que el Buscador estaba buscando, +1 para la respuesta real. =) – Michael
@Michael, ahí es donde el humor se suma al hecho ... :-D –
Como también se ha dicho, el operador + = es un atajo. Un ejemplo:
var = 1;
var = var + 1;
#var = 2
También podría escribirse así:
var = 1;
var += 1;
#var = 2
Así que en lugar de escribir el primer ejemplo, sólo puede escribir el segundo, que funcionaría bien.
No es un simple atajo sintáctico.Prueba esto:
x=[] # empty list
x += "something" # iterates over the string and appends to list
print(x) # ['s', 'o', 'm', 'e', 't', 'h', 'i', 'n', 'g']
frente
x=[] # empty list
x = x + "something" # TypeError: can only concatenate list (not "str") to list
Esto ilustra que + = invoca el método de la lista iadd pero invoca + añadir, que hacer cosas diferentes con las listas.
x += 5
no es exactamente lo mismo que decir x = x + 5
en Python.
Nota aquí:
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]
Ver como referencia: Why does += behave unexpectedly on lists?
Recuerde que cuando se utiliza para resumir, por ejemplo 2 & 3, en su calculadora de edad y cada vez que se pulsa el =
ves 3 agregado al total, el +=
hace un trabajo similar. Ejemplo:
>>> orange = 2
>>> orange += 3
>>> print(orange)
5
>>> orange +=3
>>> print(orange)
8
+=
es sólo un atajo para escribir
numbers = 1
numbers = numbers + 1
print (numbers) ## 2
Así que en lugar que iba a escribir
numbers = 1
numbers += 1
print (numbers) ## 2
Ambas formas son correctas, pero ejemplo, dos le ayuda a escribir un poco menos código
- 1. ¿Qué hace exactamente git rebase --skip do?
- 2. exactamente qué hace rake db: migrate do?
- 3. ¿Qué hace/[\ []/do en JavaScript?
- 4. ¿Qué hace el script: do en powershell?
- 5. ¿Qué hace android: isScrollContainer do?
- 6. ¿Qué hace exactamente Panel.IsItemsHost?
- 7. ¿Qué hace pg_escape_string exactamente?
- 8. ¿Qué hace fillMode exactamente?
- 9. ¿Qué hace exactamente org.apache.commons.lang.builder.CompareToBuilder?
- 10. ¿Qué hace offsetLeftAndRight() exactamente?
- 11. ¿Qué hace @synthesize window = _window do?
- 12. ¿Qué hace el auto lambda: do
- 13. ¿Qué hace exactamente System.Diagnostics.Process UseShellExecute?
- 14. ¿Qué hace AFX_MANAGE_STATE (AfxGetStaticModuleState()) exactamente
- 15. ¿Qué hace exactamente 'bloqueo Mutex'?
- 16. ¿Qué hace exactamente removedOnCompletion = NO?
- 17. ¿Qué hace exactamente android: layout_column?
- 18. ¿Qué hace exactamente -march = native?
- 19. ¿Qué hace rel = "nofollow me" do?
- 20. ¿Qué hace:% S do in vim?
- 21. ¿Qué hace! Function ($) {$ (function() {})} (window.jQuery) do?
- 22. ¿Qué hace `__importar __ ('pkg_resources'). Declare_namespace (__ name __)` do?
- 23. ¿Qué hace :: MyClass Ruby scope operator do?
- 24. ¿Qué hace java: comp/env/do?
- 25. ¿Qué hace exactamente el método .join()?
- 26. ¿Qué hace git merge origin/master do?
- 27. ¿Qué hace ReferenceLoopHandling.Ignore en Newtonsoft.json exactamente?
- 28. ¿Qué hace mvn instalar en maven exactamente?
- 29. ¿Qué hace exactamente la normalización en CSS?
- 30. ¿Qué hace exactamente Attach() en Entity Framework?
['object .__ iadd__'] (http: // doc s.python.org/reference/datamodel.html#object.__iadd__) – ephemient
es un operador básico para python (y muchos otros idiomas también), debe comenzar con google, si nunca lee ninguna referencia de python. – technomage
@AndiDog Si bien es cierto que ambas preguntas son sobre el operador (+ =), la que usted ha vinculado es sobre un uso sofisticado y un problema sutil, y es probable que el OP aquí no pueda seguir el razonamiento allí (todavía). –