8

在缩短我的代码时,我将一些变量声明减少到一行 -

##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 文档,但我仍然找不到缩短这段特定代码的方法。

4

1 回答 1

11

你不能。您不能将扩充分配与多个目标一起使用。

您可以在链接到的增强赋值语句部分中看到这一点:

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规则要分配到的地方。

我根本不会尝试缩短它。试图将扩充的作业压缩到一行并不能提高可读性或对正在发生的事情的理解。

于 2015-01-17T18:07:24.763 回答