この記事は最終更新日から1年以上が経過しています。
    
はじめに
Pythonの初見殺しです。
初見殺し
| Python 3.7.2 (default, Feb 12 2019, 08:15:36)  [Clang 10.0.0 (clang-1000.11.45.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> *range(5)   File "<stdin>", line 1 SyntaxError: can't use starred expression here >>> *range(5), (0, 1, 2, 3, 4) | 
つらい。。。
解説
【 * 】アンパック
まず
			*ですがアンパックと呼ばれるものです。
https://docs.python.org/ja/3.7/tutorial/controlflow.html#unpacking-argument-lists
iterableなオブジェクトを分解します。
| >>> list  = [1,2,3] >>> print(*list) 1 2 3 | 
これは
			listが分解されて、
			print(list[0], list[1], list[2]) のようにそれぞれ引数に渡す形になるのでこのような結果になります。
(Python3だとprintは関数)
つまり 
			*range(5) は分解しただけ、でどのようなオブジェクトにすれば良いのかかわかりません。
そこで 
			, をつけるのです。
【 , 】タプル
実はPythonでタプルを作るのは
			()ではなく
			,です。
https://docs.python.org/ja/3.7/library/stdtypes.html#tuples
| >>> 1,2,3 (1, 2, 3) | 
つまり
			*range(5) でiterableなオブジェクトをアンパック
→ 
			*range(5), カンマをつけてタプルとしてアンパック
→  
			(0, 1, 2, 3, 4) となります。
まとめ
Python便利なのと簡潔に書けすぎて注意が必要ですね。
仕様をしっかり理解しましょう。
この記事を書いた人

最近書いた記事
 2025.02.20作曲AIを動かす環境構築 2025.02.20作曲AIを動かす環境構築
 2019.10.11Pythonのアンパックとタプル 2019.10.11Pythonのアンパックとタプル
 2019.01.22JavaScript側でsubmitができない 2019.01.22JavaScript側でsubmitができない
 2018.12.13「AWS Toolkit for PyCharm について」~ RecoChoku Tech Night #09 4社合同 AWS re:Invent参加レポート で登壇しました ~ 2018.12.13「AWS Toolkit for PyCharm について」~ RecoChoku Tech Night #09 4社合同 AWS re:Invent参加レポート で登壇しました ~











