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

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

##For example- going from-
Var1 =15
Var2 = 26
Var3 = 922

##To-
Var1, Var2, Var3 = 15, 26, 922

Однако, когда я попытался сделать то же самое с этим кодом,

User_Input += Master_Key[Input_ref]
Key += Master_Key[Key_ref]
Key2 += Master_Key[Key_2_Ref]

##Which looks like-
User_Input, Key, Key2 += Master_Key[Input_Ref], Master_Key[Key_Ref], Master_Key[Key_2_Ref]

Это выдает ошибку

SyntaxError: illegal expression for augmented assignment

Я прочитал соответствующую документацию по Python, но до сих пор не могу найти способ сократить этот конкретный фрагмент кода.

1 ответ

Решение

Нет, ты не можешь. Вы не можете использовать расширенное назначение вместе с несколькими целями.

Это можно увидеть в разделе " Расширенные операторы присваивания ", с которым вы связались:

augmented_assignment_stmt ::=  augtarget augop (expression_list | yield_expression)
augtarget                 ::=  identifier | attributeref | subscription | slicing

augtarget Правило допускает только одну цель. Сравните это с правиламиоператоров присваивания:

assignment_stmt ::=  (target_list "=")+ (expression_list | yield_expression)
target_list     ::=  target ("," target)* [","]
target          ::=  identifier
                     | "(" target_list ")"
                     | "[" target_list "]"
                     | attributeref
                     | subscription
                     | slicing

где у вас есть target_list Правило для назначения.

Я бы не стал сокращать это вообще; попытка втиснуть расширенные назначения в одну строку не улучшает читаемость или понимание происходящего.

Другие вопросы по тегам