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

回答編集履歴

6

追記

2018/10/07 10:38

投稿

LouiS0616
LouiS0616

スコア35680

answer CHANGED
@@ -17,7 +17,8 @@
17
17
  b = abc(arg2)
18
18
  return b
19
19
 
20
- print(cde(a))
20
+ print(cde(a)) # 12
21
+ print(a) # 5
21
22
  ```
22
23
 
23
24
  この場合グローバル空間の変数aは書き換えられませんので、変数の変化を追いやすいです。

5

修正

2018/10/07 10:38

投稿

LouiS0616
LouiS0616

スコア35680

answer CHANGED
@@ -9,12 +9,12 @@
9
9
  ```Python
10
10
  a = 5
11
11
 
12
- def abc(a):
12
+ def abc(arg1):
13
- a += 7
13
+ arg1 += 7
14
- return a
14
+ return arg1
15
15
 
16
- def cde(a):
16
+ def cde(arg2):
17
- b = abc(a)
17
+ b = abc(arg2)
18
18
  return b
19
19
 
20
20
  print(cde(a))

4

追記

2018/10/07 10:37

投稿

LouiS0616
LouiS0616

スコア35680

answer CHANGED
@@ -17,6 +17,8 @@
17
17
  b = abc(a)
18
18
  return b
19
19
 
20
- a = cde(a)
21
- print(a)
20
+ print(cde(a))
22
- ```
21
+ ```
22
+
23
+ この場合グローバル空間の変数aは書き換えられませんので、変数の変化を追いやすいです。
24
+ aを書き換えたい場合は、関数の返り値を再代入する形にします。

3

修正

2018/10/07 10:01

投稿

LouiS0616
LouiS0616

スコア35680

answer CHANGED
@@ -17,5 +17,6 @@
17
17
  b = abc(a)
18
18
  return b
19
19
 
20
+ a = cde(a)
20
- print(cde(a))
21
+ print(a)
21
22
  ```

2

修正

2018/10/07 09:59

投稿

LouiS0616
LouiS0616

スコア35680

answer CHANGED
@@ -1,1 +1,21 @@
1
- 間違えて送信してしまいまし。しばらくお待ちくださ
1
+ > なぜこのコードは成り立のでしょうか?
2
+
3
+ [Python よくある質問 » なぜ変数に値があるのに UnboundLocalError が出るのですか?](https://docs.python.jp/3/faq/programming.html#why-am-i-getting-an-unboundlocalerror-when-the-variable-has-a-value)
4
+
5
+ > またこのコードを成り立たせるためにはどうすればよいのでしょうか?
6
+
7
+ リンク先のようにglobal文を用いて解決するのが一つの方法です。
8
+ が、メンテナンスの観点から、aを引数及び返り値としてやり取りする方が良いと思います。
9
+ ```Python
10
+ a = 5
11
+
12
+ def abc(a):
13
+ a += 7
14
+ return a
15
+
16
+ def cde(a):
17
+ b = abc(a)
18
+ return b
19
+
20
+ print(cde(a))
21
+ ```

1

修正

2018/10/07 09:52

投稿

LouiS0616
LouiS0616

スコア35680

answer CHANGED
@@ -1,1 +1,1 @@
1
- > なぜこのコードは成り立たなのでょうか?
1
+ 間違えて送信してしまた。しばらくお待ちください。