2017-10-29 2 views
3

私は私が書いていた私のコードのバグ今夜が見つかりました:なぜ `item [" error "]:"メッセージ "` python 3.6の構文エラーではありませんか?

item["error"]: "message" 

代わりに:元の行は、構文エラーが発生しなかった理由

item["error"] = "message" 

を私は把握することはできません何があります。そこには何が起こっているのですか?これはdict宣言の中にはありません。これは通常の単体のコード行です。

答えて

3

偶然、annotateditem["error"]の値が"message"です。 (実際には、アノテーションを処理するコードはすべて、デフォルトでは何もありません。)変数アノテーションは、Python 3.6の新機能です。

+0

私はPEP526を認識していませんでした。私は、このような構文を使用するのはひどい決定だと思っています。 – boatcoder

+0

このようなコード行で 'pylint'を試しました。何か「無意味な声明」の警告を得ることを望んだが、「パイリンツ」は何の問題も見ない。まあ、それは新しい注釈を作成するので、実際には無意味なステートメントではありません。しかし、エラーなしで警告なしでは、それは "つかの間"です。 – VPfB

+0

これについて少し考えましたが、アノテーション演算子として '@'を使う方がはるかに意味があると思います。 'item' [' error '] @ "message'これは' @property'やjavaアノテーションに似ていますが、視覚的には '='との距離が離れています。 'dict'の構築における' = 'の役割。 – boatcoder

関連する問題