私はタプルを解凍するための標準的な方法がこのようなものです
_a, b, c = (1, 2, 3)
# or
(a,b,c) = (1, 2, 3)
_
しかし、あなたはこのようなタプルを解凍することができることに気づいた
_[a, b, c] = (1, 2, 3)
_
2番目の方法は、ある種のキャストまたはリストの構築のために余分なコストをかけますか? python通訳がコンパイラからのアセンブリを見てこのalkeをどのように対処しているかを検査する方法はありますか?
使用する Godbolt とPython
を選択すると、3行のコードを入力すると、すべて同じバイトコードがあることがわかります。
1 0 LOAD_CONST 5 ((1, 2, 3))
2 UNPACK_SEQUENCE 3
4 STORE_NAME 0 (a)
6 STORE_NAME 1 (b)
8 STORE_NAME 2 (c)
2 10 LOAD_CONST 6 ((1, 2, 3))
12 UNPACK_SEQUENCE 3
14 STORE_NAME 0 (a)
16 STORE_NAME 1 (b)
18 STORE_NAME 2 (c)
3 20 LOAD_CONST 7 ((1, 2, 3))
22 UNPACK_SEQUENCE 3
24 STORE_NAME 0 (a)
26 STORE_NAME 1 (b)
28 STORE_NAME 2 (c)
_
そのため、それらは同じではなく、異なる構文です。
Linux Perf Toolsを使用して実行時間とサイクル数を確認しました。 3つのプログラムはすべて同じ実行時間を示しているので、追加のコストはありません。