回答編集履歴

1

追記

2020/06/30 06:59

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -41,3 +41,51 @@
41
41
 
42
42
 
43
43
  **参考**: [functools --- 高階関数と呼び出し可能オブジェクトの操作 — Python 3.8.3 ドキュメント](https://docs.python.org/ja/3/library/functools.html#functools.singledispatch)
44
+
45
+
46
+
47
+ 可変長引数への対応
48
+
49
+ ---
50
+
51
+ > 残念ながら、add_all(*range(10))のような肝心の複数対応がエラーになるようです
52
+
53
+
54
+
55
+ 引数をタプルに格納するのに時間がかかっていると仮説を立て、次のように組んでみました。
56
+
57
+ ```Python
58
+
59
+ def add_all(value, *values: int) -> None:
60
+
61
+ if not values:
62
+
63
+ pass
64
+
65
+ else:
66
+
67
+ for v in [value, *values]:
68
+
69
+ pass
70
+
71
+ ```
72
+
73
+
74
+
75
+ **実行結果** [Wandbox](https://wandbox.org/permlink/51SpMTi1zEeliiJl)
76
+
77
+ ```
78
+
79
+ for-loop alone: 0.32705522s
80
+
81
+ add(): 1.31953120s
82
+
83
+ add_all(): 2.10929275s
84
+
85
+ ```
86
+
87
+
88
+
89
+ 先ほどのように劇的ではありませんが、多少の改善は見られるようです。
90
+
91
+ ただし今度は引数無しの場合に対応していませんが。