Описание тега augmented-assignment

Расширенное присваивание (или составное присваивание) - это имя, данное определенным операторам присваивания в определенных языках программирования (особенно тех, которые являются производными от C). Расширенное присваивание обычно используется для замены оператора, когда оператор принимает переменную в качестве одного из своих аргументов, а затем присваивает результат той же переменной. Простым примером является x += 1, который расширяется до x = x + 1.
9 ответов

Почему += ведет себя неожиданно в списках?

+= оператор в Python, кажется, работает неожиданно в списках. Кто-нибудь может сказать мне, что здесь происходит? class foo: bar = [] def __init__(self,x): self.bar += [x] class foo2: bar = [] def __init__(self,x): self.bar = self.bar + [x] f = foo(…
27 фев '10 в 12:15
1 ответ

Почему деструктурированное расширенное назначение невозможно?

Разрушение возможно в питоне: a, b = 1, 2 Расширенное назначение также возможно: b += 1 Но есть ли причина, деструктурирующая расширенное назначение, не может быть сделано? a, b += 1, 2 > SyntaxError: illegal expression for augmented assignment И…
17 янв '19 в 05:09
4 ответа

Как реализовать "__iadd__()" для неизменяемого типа?

Я хотел бы создать подкласс неизменяемого типа или реализовать свой собственный, который ведет себя как int делает, как показано в следующем сеансе консоли: >>> i=42 >>> id(i) 10021708 >>> i.__iadd__(1) Traceback (most rec…
06 авг '12 в 21:58
2 ответа

UnboundLocalError при использовании += в списке. Почему здесь необходим нелокальный режим, когда прямой вызов __iadd__ работает нормально?

Рассмотрим этот код: def main(): l = [] def func(): l += [1] func() print(l) if __name__ == '__main__': main() Это произведет: Traceback (most recent call last): File "/Users/tahsmith/Library/Preferences/PyCharm2017.1/scratches/scratch_21.py", line …
2 ответа

Является ли этот код потокобезопасным в Python 2.7?

Должен ли я использовать атомный счетчик с блокировкой или это можно использовать? def somefunc(someparam): if someparam: dic['key'] +=1
2 ответа

Python троичный условно для присоединения строки

Ответил Мартин Питерс. Спасибо.Это потому, что утверждение против выражения. А поскольку.join() не видоизменяется (это чистая функция), его необходимо присвоить переменной. Вопрос:В чем причина этой странности? Цель: if base == 'T': RNA_seq += 'U' e…
10 май '14 в 07:14
1 ответ

Регулярное выражение для расширенной операции присваивания с использованием положительного прогнозирования или прогнозирования

Я использовал следующее регулярное выражение для поиска и сопоставления расширенных операторов присваивания: AUG_ASSIGN = r'\+=|\-=|\*=|@=|/=|%=|/@=|&=|\|=|\^=|\<\<=|\>\>=|\*\*=|//=' У меня есть догадка, что можно устранить многократ…
19 окт '18 в 06:19
0 ответов

Странные результаты с использованием расширенного назначения

Я пробую разные вещи с расширенным заданием на C. Однако я не могу понять, что здесь происходит и почему. Вот пример кода: int a = 3; int b = 0; a *= a = a *= a; // a = 27, b = 0 a = 3; b = 0; a *= b = a *= a; // a = 27, b = 9 a = 3; b = 0; b *= b =…
23 апр '14 в 14:00
1 ответ

Могу ли я использовать += для нескольких переменных в одной строке?

Сокращая свой код, я сокращал несколько объявлений переменных в одну строку. ##For example- going from- Var1 =15 Var2 = 26 Var3 = 922 ##To- Var1, Var2, Var3 = 15, 26, 922 Однако, когда я попытался сделать то же самое с этим кодом, User_Input += Mast…
0 ответов

Параметр функции является справочным?

def add_list(p): p = p + [1] p1 = [1, 2, 3] add_list(p1) print p1 res:[1, 2, 3] НО def add_list(p): p += [1] p1 = [1, 2, 3] add_list(p1) print p1 res:[1, 2, 3, 1] Я не знаю почему, кто-то может объяснить это? В чем основное различие между ними?
16 июн '15 в 10:53
2 ответа

Возможность концепции оператора присваивания для метода объекта

Позволять: a = 5, b = 10, а также hello_world = 'Hello World', Насколько я понимаю: Python позволяет нам использовать операторы присваивания, чтобы нам не пришлось повторять левый операнд. Например, a = a + b может быть переписан как a += b где оба …
16 сен '17 в 18:31
0 ответов

Как Fortran обрабатывает расширенное присвоение массивов?

В последнее время я работал над некоторым кодом, который требует от меня смещения элементов в массиве влево, вправо, вверх и вниз (в зависимости от индекса i). Моей первой мыслью было попробовать что-то вроде этого: subroutine shift(f) real, intent(…
4 ответа

Понимание списка Python против +=

Сегодня я пытался найти метод, чтобы сделать некоторую обработку строк в Python. Более старший программист, чем я сказал, не использовать += но использовать ''.join() Я мог бы также прочитать это, например: http://wiki.python.org/moin/PythonSpeed/. …
0 ответов

Предупреждение о неразрешенном атрибуте Pycharm

Пожалуйста, рассмотрите следующий код: import numpy as np r = [1, 0, -1, 0] bins = np.fft.fft(r) / len(r) x = bins.view(float) Учитывая приведенный выше код, PyCharm возвращает это предупреждение: Unresolved attribute reference 'view' for class 'int…
29 май '15 в 12:24
2 ответа

Приоритет оператора Python с расширенным присваиванием

Кажется, на этот вопрос ответили только для Java, но я хотел бы знать, как это работает в Python. Так это одно и то же? a += b / 2 а также a += (b / 2)
2 ответа

Расширенное назначение на python для логических операторов

Есть ли в Python операторы расширенного присваивания, соответствующие его логическим операторам? Например, я могу написать это: x = x + 1 или это: x += 1 Есть ли что-то, что я могу написать вместо этого: x = x and y Чтобы не писать "х" дважды? Обрат…
16 окт '14 в 16:38
0 ответов

Изменить цвет QR-кода в режиме реального времени

Я хочу изменить цвет QR-кода на желтый с оригинального черного цвета в режиме реального времени. Насколько я понимаю, это будет тема дополненной реальности, которая является новой для меня. Я уже искал в Google, но ничего релевантного я там не нашел…
1 ответ

Приоритет оператора Python с расширенным присваиванием, включая последовательность

В продолжение моего предыдущего вопроса у меня следующий. Это то же самое в Python? a += b[1] / 2 а также a += (b[1] / 2) При условии что: a ранее был определен как float b это список кортежей b[1] это кортеж с одним элементом Точно так же мне было …
1 ответ

Булевый оператор Python на месте

Python имеет операторы на месте, такие как -= а также |= для арифметических и битовых операций: FLAG_FOO = 1 << 0 FLAG_BAR = 1 << 1 mask = FLAG_FOO mask |= FLAG_BAR assert mask == 3 == FLAG_FOO | FLAG_BAR Есть ли эквивалент для фактическ…
21 апр '17 в 01:32
1 ответ

Как сделать изменяемое свойство доступным только для чтения?

У меня есть два класса, один с переопределением "оператор на месте" (скажем, +=) и другой, который выставляет экземпляр первого через @property, (Примечание: это значительно упрощает мой действительный код до минимума, который воспроизводит проблему…