0

次のような変数を「名前で」グローバル名前空間に追加できることを知っています。

def getNewVar(name,val):
    globals()[name]=val

問題は、ローカル名前空間でこれを行いたいということです。locals()の代わりに使用しようとして失敗しましたglobals()。なぜ私がこのようなことをするのか知りたい人もいるでしょう。OK、私のユースケースでは、関数への引数は実際には辞書であり、次のようなことをしたいと思います:

def processDictEntries(dict):
    for varname in dict.keys():
        locals()[varname]=dict[varname]  # won't work, of course

このようにして、関数のさらに下で、入力し続ける必要がなくなります

result1=dict['var1']+5.
result2=dict['var2']*dict['var7']

何度も何度も。私はちょうど入力することができます

result1=var1+5
result2=var2*var7

そして、私が書いたような小さなループでこれを行う方法があれば、私はする必要はありません:

var1=dict['var1']
var2=dict['var2'] etc.

また。私は本当にコードの経済性を探しています。それは大きな辞書です。

ところで、辞書のエントリは決して変更されません。厳密に入力されます。そして、はい、関数が必要とする変数の 1 つが入力辞書にない場合、問題が発生することはわかっていますが、対処できると思います。ありがとう!

4

1 に答える 1