Что это значит + = в Python? - PullRequest
       3

Что это значит + = в Python?

2 голосов
/ 11 октября 2011

Что это значит, когда это так:

self.something += ('somethin',)

Что означает "+ =" и что означает запятая?

Ответы [ 4 ]

8 голосов
/ 11 октября 2011

Выражение a += b является сокращением для a = a + b, где a и b могут быть числами, или строками, или кортежами, или списками (но оба должны быть одного типа).

Запятая в ('x',) означает, что это кортеж из одного элемента, 'x'. Если запятая отсутствует, это просто 'x' в скобках.

3 голосов
/ 11 октября 2011

В Python есть оператор для присвоения имени имени, и оно =.

Язык также поддерживает многие другие операторы, такие как +, -, ** для операций, определенных в специальных методах ваших объектов.

Хотя + является математическим знаком для добавления вещей, его можно настроить так, чтобы он делал все, что угодно.

Иногда вы хотите выполнить операцию и сохранить ее под тем же именем. В этих ситуациях у вас есть операторы на месте, которые являются обычными операторами, которые вы используете для добавления знака =.

Для неизменяемых объектов (чисел, строк, кортежей, ...) нельзя вносить изменения на месте, потому что ... они неизменны. Таким образом, методы на месте делают то же самое, что и обычный метод с последующим присваиванием.

Для изменяемых объектов разница составляет много ясно:

добавить на место:

>>> a = []
>>> b = a
>>> b += [1,2]
>>> a
[1, 2]

Добавить и назначить:

>>> a = []
>>> b = a
>>> b = b + [1,2]
>>> a
[]

См? Сам объект был преобразован с помощью добавления списков на месте, но в другом случае был создан новый объект.


Что касается вашего другого вопроса, запятая - это разделитель кортежей.

a = (1)   # Just number 1 inside parenthesis
a = (1,)  # A tuple with one element
2 голосов
/ 11 октября 2011

+= - это сложение и присвоение в один (иногда его называют iadd или добавление на месте).Это то же самое, что и a = a + x

a = 4
a += 5  # add 5 to a, and assign the result into a
b = 4
b = b + 5   # this does the same thing as +=
print a  # prints out 9
print b  # prints out 9

Вы также можете выполнять другие операции в этом стиле, например -=, *=, /=, &= (поразрядно и), |= (поразрядный или), ^= (поразрядный xor), %= (мод), * ​​1016 * (показатель степени).


('something',) - это кортеж ,('something') (без запятой) использует скобки в группировке, например, ('some' + 'thing') или (a + b).Для разграничения синтаксического синтаксиса между кортежем из одного члена и Python используется запятая.

0 голосов
/ 22 мая 2019

Это метод пост-приращения в Python.num + = 1 - это то же самое, что num = num + 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...