globals() を使用して文字列、整数などを代入するとうまくいきます。
>>> グローバル() {'__builtins__': , '__name__': '__main__', '__doc__': なし, '__package__': なし} >>> グローバル ()["a"] = 5 >>> あ 5 >>> グローバル() {'__builtins__': , '__name__': '__main__', '__doc__': なし, 'a': 5, '__package__': なし}
ただし、辞書に割り当てようとすると失敗します。
>>> グローバル ()["b['c']"] = 5 >>> グローバル() {'a': 5, "b['c']": 5, '__builtins__': , '__package__': なし, '__name__': '__main__', '__doc__': なし} >>> b['c'] トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、 NameError: 名前 'b' が定義されていません
これは、"b" が既に辞書として定義されている場合でも当てはまります。
では、"b['c']" などのテキスト文字列が与えられた場合、どのように b['c'] を割り当てるのでしょうか?