8

コードを短くしている間、いくつかの変数宣言を 1 行に削減していました。

##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ルールでは、1 つのターゲットのみが許可されます。これを割り当てステートメントの規則と比較してください。

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

target_list割り当てるルールがある場所。

私はこれを短縮しようとはしません。拡張された割り当てを 1 行に詰め込もうとしても、読みやすさや何が起こっているのかの理解は向上しません。

于 2015-01-17T18:07:24.763 に答える