1. ホーム
  2. python

[解決済み] Python: 名前空間へのディクショナリ変数のロード

2023-05-05 02:11:24

質問

関数内で定義されたローカル変数の束を、関数の外で使いたい。そこで、私は x=locals() を戻り値で渡しています。

その辞書で定義されたすべての変数を関数外の名前空間にロードするには、どうすればよいでしょうか。 x['variable'] を使って値にアクセスする代わりに、単純に variable .

どのように解決するのですか?

以下のように Bunch の代替案を考えてみましょう。

class Bunch(object):
  def __init__(self, adict):
    self.__dict__.update(adict)

ということで、辞書がある場合は d という構文でその値にアクセス(読み込み)したいとします。 x.foo の代わりに、より不器用な d['foo'] を使うのではなく、単に

x = Bunch(d)

は、関数の内部でも外部でも動作します -- そしてそれは 非常に を注入するよりも非常にクリーンで安全です。 dglobals() ! Zen of Pythonの最後の行を思い出してください...。

>>> import this
The Zen of Python, by Tim Peters
   ...
Namespaces are one honking great idea -- let's do more of those!