回答編集履歴
1
参照追加
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
関数```mkhead```の中で定義したローカル変数```goukei```は、関数```dbdata```からは見えません。
|
2
2
|
|
3
|
-
そこまじめに考えて方が良いでしょう。
|
3
|
+
そこを解決するにはまじめに考えて方が良いでしょう。
|
4
4
|
|
5
5
|
手抜きで修正するなら、
|
6
6
|
|
@@ -16,4 +16,10 @@
|
|
16
16
|
global goukei
|
17
17
|
goukei = 0
|
18
18
|
```
|
19
|
-
のように、global宣言を入れれば、```local variable referenced before assignment``` のエラーは出なくなります。
|
19
|
+
のように、global宣言を入れれば、```local variable referenced before assignment``` のエラーは出なくなります。
|
20
|
+
|
21
|
+
[公式ドキュメント 4. 実行モデル 4.2. 名前づけと束縛 (naming and binding)](https://docs.python.org/ja/3/reference/executionmodel.html#naming-and-binding)には以下のように書かれています。
|
22
|
+
|
23
|
+
ある名前がブロック内で束縛されているなら、 nonlocal や global として宣言されていない限り、それはそのブロックのローカル変数 (local variable) です。 ある名前がモジュールレベルで束縛されているなら、その名前はグローバル変数 (global variable) です。 (モジュールコードブロックの変数は、ローカル変数でも、グローバル変数でもあります。) ある変数があるコードブロック内で使われていて、そのブロックで定義はされていないなら、それは自由変数 (free variable) です。
|
24
|
+
|
25
|
+
これをよく読むとわかるのですが、最初は難しいかもしれません。
|