LoginSignup
3
1

More than 3 years have passed since last update.

PythonでJavaScriptの分割代入のようなことをする

Last updated at Posted at 2020-12-01

やりたいこと

JavaScriptの分割代入のようなことがPythonでしたいです。

destructuringAssignment.js
let a, b, c;
[a, b, c] = ["x", "y", "z"];
console.log(a, b, c); // x y z

結論

Pythonのシーケンスのアンパックによって実現できます。

unpack.py
a, b, c = ("x", "y", "z")
print(a, b, c) # x y z

余談

Pythonのテキストデータはテキストシーケンス型であり、シーケンスのアンパックが行えます。

textunpack.py
a, b, c = "xyz"
print(a, b, c) # x y z

このPythonの挙動を見て、JavaScriptではどうなるのか試したところ。。。

textDestructuringAssignment.js
let a, b, c;
[a, b, c] = "xyz";
console.log(a, b, c); // x y z

いけました!ただし、色々調べましたがこちらの仕様がECMAScriptのどこで定義されているのかはよくわかりませんでした。。。

さらにここから、見かけ上Pythonと同様の記法も試してみました!

textUnpack.js
let a, b, c;
a, b, c = "xyz";
console.log(a, b, c); // undefined undefined xyz

どうやら左辺の最後の変数に右辺の値が代入され、左辺の最後以外の変数には何も起きないようです。
このあたりの仕様も一旦この記事にメモ書きして、興味が湧いたらまた調べます!

参考URL

分割代入 - JavaScript | MDN
5. データ構造 — Python 3.9.1rc1 ドキュメント
組み込み型 — Python 3.9.1rc1 ドキュメント

3
1
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1