Почему не operator.iadd(x, y)
эквивалент z = x; z += y
? И Как operator.iadd(x, y)
отличается от operator.add(x, y)
?Как работают операторы на рабочем месте Python, отличные от стандартных функций оператора?
Из docs:
Многие операции имеют версию «на месте». Следующие функции обеспечивают более примитивный доступ к операциям на месте , чем обычный синтаксис ; например, оператор x + = y эквивалентен x = operator.iadd (x, y). Другой способ: сказать, что z = operator.iadd (x, y) эквивалентно составной оператор z = x; z + = y.
Related question, но меня не интересуют методы класса Python; просто регулярные операторы на встроенных типах Python.
http://docs.python.org/2/reference/datamodel.html#object.__iadd__ Обратите внимание, что дополненная задания может, но не имеет изменить объект на месте – lig
Почему питон разработан с расширенными заданиями, действующими на месте? Это похоже на контр-интуицию, потому что, когда мы изучаем язык, мы обычно сначала изучаем дополнительные задания с неизменяемыми значениями. Поэтому немного неожиданно, что с измененными значениями расширенное присваивание ведет себя по-разному. Чувствует себя скорее неявным и подверженным ошибкам. – max