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

質問編集履歴

5

2020/02/10 14:16

投稿

esklia
esklia

スコア81

title CHANGED
@@ -1,1 +1,1 @@
1
- default値でリスト空になる
1
+ python:毎回リスト空になるように関数を定義するには
body CHANGED
File without changes

4

a

2020/02/10 14:16

投稿

esklia
esklia

スコア81

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,8 @@
1
1
  本中に詳細な説明がなかったので質問します。入門python3p116からです。
2
- 下記コードは呼び出すと毎回空のリストになっていますが、その理由は
2
+ 下記コードは呼び出すと毎回空のリストになっていますが、
3
- 「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1はNoneに上書き(定義されなおした後)条件分岐で`result =[]`が適用されてからのリストになるという感じでしょうか?
4
3
 
4
+ **最初に関数が実行されると`result=None`ではなくなるので(resultに要素が与えられるので)、`if result is None:`の条件を満たさず、リストの中がリセットされないのではないでしょうか?そうするとどうしてresultの要素が毎回リセットされているような挙動になるのか教えていただきたいです。**
5
+
5
6
  ```
6
7
  def nonbuggy(arg, result=None):
7
8
  if result is None:
@@ -13,13 +14,4 @@
13
14
  [1]
14
15
  nonbuggy(3)
15
16
  [3]
16
- ```
17
+ ```
17
-
18
- 追記
19
- おそらくデフォルト値の解釈を誤解してました。
20
- ```
21
- def nonbuggy(arg, result=[]):
22
- result.append(arg)
23
- print(result)
24
- ```
25
- のコードで最初に`result=[]'が読み込まれるわけではなく、あくまで何も実引数が与えられなかったときにresult=[]となるだけなので上記の解釈も間違っていそうです。どなたか教えてくださると幸いです。

3

2020/02/10 14:15

投稿

esklia
esklia

スコア81

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  本中に詳細な説明がなかったので質問します。入門python3p116からです。
2
2
  下記コードは呼び出すと毎回空のリストになっていますが、その理由は
3
- 「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1はNoneに上書き(定義されなおした後)条件分岐で`result =[]`が適用されてからのリストになるという感じでしょうか?ご教授お願い致します。
3
+ 「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1はNoneに上書き(定義されなおした後)条件分岐で`result =[]`が適用されてからのリストになるという感じでしょうか?
4
4
 
5
5
  ```
6
6
  def nonbuggy(arg, result=None):
@@ -13,4 +13,13 @@
13
13
  [1]
14
14
  nonbuggy(3)
15
15
  [3]
16
- ```
16
+ ```
17
+
18
+ 追記
19
+ おそらくデフォルト値の解釈を誤解してました。
20
+ ```
21
+ def nonbuggy(arg, result=[]):
22
+ result.append(arg)
23
+ print(result)
24
+ ```
25
+ のコードで最初に`result=[]'が読み込まれるわけではなく、あくまで何も実引数が与えられなかったときにresult=[]となるだけなので上記の解釈も間違っていそうです。どなたか教えてくださると幸いです。

2

2020/02/10 14:11

投稿

esklia
esklia

スコア81

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  本中に詳細な説明がなかったので質問します。入門python3p116からです。
2
2
  下記コードは呼び出すと毎回空のリストになっていますが、その理由は
3
- 「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1とNone混在してしなことになりそうですが…ご教授お願い致します。
3
+ 「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1はNoneに上書き(定義されなおた後)条件分岐で`result =[]`が適用されてからのリストになるとい感じしょうか?ご教授お願い致します。
4
4
 
5
5
  ```
6
6
  def nonbuggy(arg, result=None):

1

2020/02/10 14:07

投稿

esklia
esklia

スコア81

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  本中に詳細な説明がなかったので質問します。入門python3p116からです。
2
2
  下記コードは呼び出すと毎回空のリストになっていますが、その理由は
3
- 「仮引数`result`のdefault値が設定されていて毎回それを最初に読み込むから」でしょうか?
3
+ 「仮引数`result`のdefault値がNoneに設定されていて毎回それを最初に読み込むから」でしょうか?だとしたらresultにappendされた1とNoneは混在しておかしなことになりそうですが…ご教授お願い致します。
4
4
 
5
5
  ```
6
6
  def nonbuggy(arg, result=None):