teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/06/30 06:59

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -19,4 +19,28 @@
19
19
  add_all(): 1.29843211s
20
20
  ```
21
21
 
22
- **参考**: [functools --- 高階関数と呼び出し可能オブジェクトの操作 — Python 3.8.3 ドキュメント](https://docs.python.org/ja/3/library/functools.html#functools.singledispatch)
22
+ **参考**: [functools --- 高階関数と呼び出し可能オブジェクトの操作 — Python 3.8.3 ドキュメント](https://docs.python.org/ja/3/library/functools.html#functools.singledispatch)
23
+
24
+ 可変長引数への対応
25
+ ---
26
+ > 残念ながら、add_all(*range(10))のような肝心の複数対応がエラーになるようです
27
+
28
+ 引数をタプルに格納するのに時間がかかっていると仮説を立て、次のように組んでみました。
29
+ ```Python
30
+ def add_all(value, *values: int) -> None:
31
+ if not values:
32
+ pass
33
+ else:
34
+ for v in [value, *values]:
35
+ pass
36
+ ```
37
+
38
+ **実行結果** [Wandbox](https://wandbox.org/permlink/51SpMTi1zEeliiJl)
39
+ ```
40
+ for-loop alone: 0.32705522s
41
+ add(): 1.31953120s
42
+ add_all(): 2.10929275s
43
+ ```
44
+
45
+ 先ほどのように劇的ではありませんが、多少の改善は見られるようです。
46
+ ただし今度は引数無しの場合に対応していませんが。