次のような変数を「名前で」グローバル名前空間に追加できることを知っています。
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 つが入力辞書にない場合、問題が発生することはわかっていますが、対処できると思います。ありがとう!