回答編集履歴

2

元の回答の間違いについて追記

2018/08/31 03:47

投稿

KSwordOfHaste
KSwordOfHaste

スコア18392

test CHANGED
@@ -95,3 +95,13 @@
95
95
  (配置した結果として表示されるようになるので間違いとまでは言いませんが)
96
96
 
97
97
  (4) 元のコードではコメントを表すのに全角の`#`を使っておられます。「半角の#を使うとteratailのマークダウンの仕様で見出しになってしまう」という意識が働いて(?)あえて全角にしたのかも知れませんが、コード用のマークダウンの内側ではそのような心配はありませんのでPythonの仕様に従い半角`#`で記述してください。そうしないと閲覧者がコピペする際に非常に面倒です。いちいち全角の`#`を半角の`#`に書き換えないと文法エラーになってしまいますので・・・
98
+
99
+
100
+
101
+ ---
102
+
103
+ 追記:hayataka2049さん回答でのコメント欄のやりとりで自分の回答の不備に気づきました。
104
+
105
+ ローカル変数の動的生成は`locals()[変数名] = 値`では行えません。
106
+
107
+ ただしグローバルなスコープにおいて`locals()`を用いるとその結果はグローバル変数の名前空間を表すdictオブジェクトを返し(そしてグローバス変数の名前空間はこのdictオブジェクトそのものが担うため)グローバル変数の動的生成は可能ではあります。が、そもそもその目的でなら`locals()[変数名] = 値`を使うべきではなく`globals()[変数名] = 値`を使うべきであろうと思います。いずれにせよ「変数の動的生成」を使う必然性は本件ではなさそうという点では最初の回答でコメントしたとおりであります。

1

誤り訂正(ローカル変数の動的生成はできない)

2018/08/31 03:47

投稿

KSwordOfHaste
KSwordOfHaste

スコア18392

test CHANGED
@@ -40,9 +40,9 @@
40
40
 
41
41
 
42
42
 
43
- # 個人的意見(localsによるローカル変数の動的アクセス)
43
+ # 個人的意見(localsによる~~ローカル~~変数の動的アクセス)
44
44
 
45
- 複数のLabelのインスタンスを「i番目のラベル」のようにアクセスしたいからこそlistとして扱うわけでして、そのようなものをt_0, t_1, ...のようなローカル変数へわざわざlocals()を通じて代入したり参照したりすることに意味を感じません。単に次のようなコードで十分であると思います。
45
+ 複数のLabelのインスタンスを「i番目のラベル」のようにアクセスしたいからこそlistとして扱うわけでして、そのようなものをt_0, t_1, ...のような~~ローカル~~変数へわざわざlocals()を通じて代入したり参照したりすることに意味を感じません。単に次のようなコードで十分であると思います。
46
46
 
47
47
 
48
48