質問編集履歴
5
あ
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
python:毎回リストが空になるように関数を定義するには
|
test
CHANGED
File without changes
|
4
a
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
本中に詳細な説明がなかったので質問します。入門python3p116からです。
|
2
2
|
|
3
|
-
下記コードは呼び出すと毎回空のリストになっていますが、
|
3
|
+
下記コードは呼び出すと毎回空のリストになっていますが、
|
4
4
|
|
5
|
+
|
6
|
+
|
5
|
-
|
7
|
+
**最初に関数が実行されると`result=None`ではなくなるので(resultに要素が与えられるので)、`if result is None:`の条件を満たさず、リストの中がリセットされないのではないでしょうか?そうするとどうしてresultの要素が毎回リセットされているような挙動になるのか教えていただきたいです。**
|
6
8
|
|
7
9
|
|
8
10
|
|
@@ -29,21 +31,3 @@
|
|
29
31
|
[3]
|
30
32
|
|
31
33
|
```
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
追記
|
36
|
-
|
37
|
-
おそらくデフォルト値の解釈を誤解してました。
|
38
|
-
|
39
|
-
```
|
40
|
-
|
41
|
-
def nonbuggy(arg, result=[]):
|
42
|
-
|
43
|
-
result.append(arg)
|
44
|
-
|
45
|
-
print(result)
|
46
|
-
|
47
|
-
```
|
48
|
-
|
49
|
-
のコードで最初に`result=[]'が読み込まれるわけではなく、あくまで何も実引数が与えられなかったときにresult=[]となるだけなので上記の解釈も間違っていそうです。どなたか教えてくださると幸いです。
|
3
あ
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
下記コードは呼び出すと毎回空のリストになっていますが、その理由は
|
4
4
|
|
5
|
-
「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1はNoneに上書き(定義されなおした後)条件分岐で`result =[]`が適用されてからのリストになるという感じでしょうか?
|
5
|
+
「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1はNoneに上書き(定義されなおした後)条件分岐で`result =[]`が適用されてからのリストになるという感じでしょうか?
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -29,3 +29,21 @@
|
|
29
29
|
[3]
|
30
30
|
|
31
31
|
```
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
追記
|
36
|
+
|
37
|
+
おそらくデフォルト値の解釈を誤解してました。
|
38
|
+
|
39
|
+
```
|
40
|
+
|
41
|
+
def nonbuggy(arg, result=[]):
|
42
|
+
|
43
|
+
result.append(arg)
|
44
|
+
|
45
|
+
print(result)
|
46
|
+
|
47
|
+
```
|
48
|
+
|
49
|
+
のコードで最初に`result=[]'が読み込まれるわけではなく、あくまで何も実引数が与えられなかったときにresult=[]となるだけなので上記の解釈も間違っていそうです。どなたか教えてくださると幸いです。
|
2
あ
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
下記コードは呼び出すと毎回空のリストになっていますが、その理由は
|
4
4
|
|
5
|
-
「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1
|
5
|
+
「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1はNoneに上書き(定義されなおした後)条件分岐で`result =[]`が適用されてからのリストになるという感じでしょうか?ご教授お願い致します。
|
6
6
|
|
7
7
|
|
8
8
|
|
1
あ
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
下記コードは呼び出すと毎回空のリストになっていますが、その理由は
|
4
4
|
|
5
|
-
「仮引数`result`のdefault値が設定されていて毎回それを最初に読み込むから」でしょうか?
|
5
|
+
「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1とNoneは混在しておかしなことになりそうですが…ご教授お願い致します。
|
6
6
|
|
7
7
|
|
8
8
|
|