質問: 10 del a if a > 5 else b ``` これでSyntaxErrorが出ました。 --- ``` if a > 5: del a else: del b ``` で済む話なので別に問題はないのですが、 気になったので興味本位で質問しました。
回答: del文でdelのうしろに**式は置けません**。 リンクで に飛ぶとtarget_listは代入文の左に置けるものだけだとわかります。(代入文の左に置けるものならなんでもいいわけでもないですが) 1つ目のリンクに > > **del_stmt** ::= "del" target_list > > > と書いてあります。 del文は「"del" の次に target_list を続ける」という形をしています という表明です。 で、target_listがリンクになっていますね。これでジャンプすると(2つ目のリンクです)代入文の説明に行きます。 > > **assignment_stmt** ::= (target_list "=")+ (starred_expression | yield_expression) > > > と書いてあります。 代入文は 「「target_list の次に"="を続ける」形を1回以上繰り返して、その次に「starred_expressionかyield_expression」を続ける」という形をしています という表明です。 target_list の次に"="を続けるのですから、必然、"="の左にくるものがtarget_listです。