回答編集履歴

1

追記

2020/09/17 05:08

投稿

quickquip
quickquip

スコア11235

test CHANGED
@@ -27,3 +27,47 @@
27
27
  (5, 6, 4)
28
28
 
29
29
  ```
30
+
31
+
32
+
33
+ ----
34
+
35
+
36
+
37
+ (追記)
38
+
39
+ `def test(*args)`という引数定義を用意する時は、その意図は
40
+
41
+ ```python
42
+
43
+ test(4, 5, 6)
44
+
45
+ ```
46
+
47
+ と呼び出されることを想定しています。
48
+
49
+
50
+
51
+ それに対して`[4, 5, 6]`を元に渡したいなら呼び出す側が*展開で合わせてあげるのが筋です。
52
+
53
+
54
+
55
+ **一方で**、呼び出す側からしたら「いつもいつも1つのリストを元にして値を渡すことになる」なら、*展開は無駄であって、その場合は「関数を定義した人が見込みを誤った」ということになります。
56
+
57
+
58
+
59
+ そのような関数は
60
+
61
+ ```python
62
+
63
+ def test(lst):
64
+
65
+ """
66
+
67
+ :param lst: intを格納したIterable
68
+
69
+ ...
70
+
71
+ ```
72
+
73
+ というような定義にする方が自然だったということです。