¿Por qué no es operator.iadd(x, y)
equivalente a z = x; z += y
? Y ¿cómo se diferencia operator.iadd(x, y)
de operator.add(x, y)
?¿Cómo son las funciones del operador in situ de Python diferentes a las funciones estándar del operador?
Desde el docs:
Muchas operaciones tienen una versión “in situ” . Las siguientes funciones proporcionan un acceso más primitivo a los operadores in situ que la sintaxis habitual; por ejemplo, la instrucción x + = y es equivalente a x = operator.iadd (x, y). Otra forma de poner es decir que z = operator.iadd (x, y) es equivalente a la sentencia compuesta z = x; z + = y.
Related question, pero no estoy interesado en los métodos de clase Python; solo operadores regulares en tipos de Python incorporados.
http://docs.python.org/2/reference/datamodel.html#object.__iadd__ en cuenta que podría aumentarse las asignaciones, pero no tiene para modificar el objeto in situ – lig
¿Por qué Python está diseñado con asignaciones aumentadas que funcionan en el lugar? Es un poco intuitivo porque cuando aprendemos el idioma generalmente aprendemos tareas aumentadas con valores inmutables primero. Por lo tanto, es un poco inesperado que con valores variables la asignación aumentada se comporte de manera diferente. Se siente bastante implícito y propenso a errores. – max