[解決済み] 空のリストへの代入(例:[] = "")は、なぜエラーにならないのでしょうか?
質問
Python 3.4で、私は次のように入力しています。
[] = ""
で、Exceptionが発生せず、正常に動作します。しかし、もちろん
[]
とは等しくありません。
""
の後に
[] = ()
も問題なく動作します。
"" = []
は予想通り例外を発生させますが
() = ""
は予想通り例外を発生させますが。では、どうなっているのでしょうか?
どうすれば解決するのか?
等しいかどうかを比較していない。あなたは 代入 .
Pythonでは、複数のターゲットに割り当てることができます。
foo, bar = 1, 2
は二つの値を
foo
と
bar
をそれぞれ使用します。必要なのは
シーケンス
または
イテラブル
を右辺に、名前のリストまたはタプルを左辺に記述します。
そうすると
[] = ""
を指定した場合 空の シーケンス(空の文字列もシーケンスです)を空の名前のリストに割り当てています。
するのと本質的に同じことです。
[foo, bar, baz] = "abc"
ここで、最終的に
foo = "a"
,
bar = "b"
と
baz = "c"
と同じですが、文字数が少なくなっています。
ただし、文字列に代入することはできないので
""
は決して機能せず、常にシンタックスエラーとなります。
を参照してください。 アサインメント ステートメント ドキュメント :
代入文は式リスト(これは単一の式またはカンマで区切られたリストであり、後者はタプルを生成することを覚えておいてください)を評価し、単一の結果のオブジェクトを左から右へ、ターゲットリストのそれぞれに割り当てます。
と
ターゲットリストへのオブジェクトの割り当て。 括弧または角括弧で囲むこともできます。 は再帰的に次のように定義されます。
強調 .
Pythonが空のリストに対してシンタックスエラーを投げないのは、実はちょっとしたバグなのです! 公式に文書化された文法は、空のターゲットリストを許さず、空の
()
ではエラーが発生します。 以下はその例です。
バグ 23275
無害なバグと考えられています。
出発点は、これが非常に長い間存在し、無害であることを認識することです。
関連
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] リストの変更が不意にサブリスト全体に反映されたリスト
-
[解決済み】典型的なテストディレクトリ構造でunittestを実行する
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Python 言語を決定するには?