私は、 'locals'が返すものと非常によく似た辞書を使用したいが、関数の限定されたスコープ。これはPythonでこれを行う方法はありますか?Pythonでのみ関数スコープのローカル辞書を取得する
私はDjangoを使って遊んでいます。私はテンプレートのコンテキストを与えるために行くとき、手動で辞書を作成するか(DRYの原則に違反して)より多くのエントリを含んでいるlocals()では、必要(無駄)です。 Pythonレベルのソリューションの必要性を緩和する、おそらく私がdjangoにないものがありますか?
を私が持っているところだから、私は繰り返し襲ってきた場合は、次のとおりです:明確にするために
@render_to('my_template.html')
def myview(request):
var1 = #blahblah
var2 = #...
# do stuff with vars
return {'var1': val1,'var2':val2}
ので、代わりにこれらの変数と命名規則を繰り返し、私がやる:
@render_to('my_template.html')
def myview(request):
var1 = #blahblah
var2 = #...
# do stuff with vars
return locals()
私はクリーナーを見つけましたが、地元の人々()に約30のエントリがあるので、私はそれほど種類がありません。
「手作業で辞書を作成する(DRY原則に違反している」とは何ですか?辞書をDRYに違反させる方法は? –
この特定の状況を意味します。変数(var = blahblah) {'var':var}を実行すると、名前の決定が繰り返されているように見えます。4つまたは5つの変数を使用すると、面倒で面倒なことになります。 – Albinofrenchy
私は気づいていませんでした。まず、私はビュー関数に多くのローカル変数を作成しません。通常はわずかです。処理が複雑な場合、私はそれをビュー機能から引き出します。第二に、私はしばしば、ビュー機能の一部ではなくディクショナリでのみ作成される文脈情報で辞書をロードします。繰り返しは、通常、オブジェクト、オブジェクトリスト、時には要求から引き出されたキーまたは2つのものだけである。 –