回答編集履歴
6
追記
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
修正
answer
CHANGED
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
```Python
|
|
10
10
|
a = 5
|
|
11
11
|
|
|
12
|
-
def abc(
|
|
12
|
+
def abc(arg1):
|
|
13
|
-
|
|
13
|
+
arg1 += 7
|
|
14
|
-
return
|
|
14
|
+
return arg1
|
|
15
15
|
|
|
16
|
-
def cde(
|
|
16
|
+
def cde(arg2):
|
|
17
|
-
b = abc(
|
|
17
|
+
b = abc(arg2)
|
|
18
18
|
return b
|
|
19
19
|
|
|
20
20
|
print(cde(a))
|
4
追記
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
修正
answer
CHANGED
|
@@ -17,5 +17,6 @@
|
|
|
17
17
|
b = abc(a)
|
|
18
18
|
return b
|
|
19
19
|
|
|
20
|
+
a = cde(a)
|
|
20
|
-
print(
|
|
21
|
+
print(a)
|
|
21
22
|
```
|
2
修正
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
修正
answer
CHANGED
|
@@ -1,1 +1,1 @@
|
|
|
1
|
-
|
|
1
|
+
間違えて送信してしまいました。しばらくお待ちください。
|