2012-04-08 15 views
0

私は明らかに私の問題を明らかに悪いです。ごめんなさい。このような状況でevalに代わるものは何ですか?

基本的に、私は機能が非常に似ている多くのビュー機能を持っています。その一部はreverseを使用しています。しかし、これらのビュー関数はそれぞれ異なるreverseを実行するので、私はそれらを新しい「汎用ビュー」に1つずつ書き込むことはできません。それは気違いです。

当時、私は(それが重複の500行以上だ!!!!!)私が書いている重複したコードの量を削減しようとしています

この問題を解決するために、私はいくつかのヘルパー関数を持っています、そのうちの1つは、どのビュー関数が与えられてもreverseを評価することと、ヘルパー関数に渡されるすべてのargです。

def render_reverse(f, args): 
    return eval(...) 

しかし、evalは悪く、遅いです。 evalの代替品はありますか?これをDjangoで解決するためのより良いアプローチですか?

ありがとうございました。

+1

なぜあなたは 'reverse'と同じことをする関数を書いていますか? –

+0

'args'引数の例を挙げてください。 – aaronasterling

+0

こんにちは。はい。私は自分の投稿を更新しました。なぜ私がそれをやっているのか明確にすることを願っています。ありがとう。 – CppLearner

答えて

0

なぜ最初にevalにする必要がありますか? reverse()に電話するだけですか?

言っ
return reverse(f, *args) 

The * lets you unpack the argument list into actual args.


、なぜあなたは、このすべてのヘルパーが必要なのでしょうか?なぜあなたのビューにreturn reverse(...を入れてみませんか?

+0

ありがとう。という事は承知しています。私はちょうど目的を反映するために自分の投稿を更新しました。私は100の条件文を書くことはできず、それぞれの逆のことをすることができます。後で逆にするとどうなりますか?だから私はそれを評価する必要がありますが、 'eval'は通常、悪い習慣とみなされます。私のコードは動作しません。 – CppLearner

+0

ありがとうございます。それは成長することができます。それは縮小することができます。コードの量を減らすことが目的なら、なぜ私はそれらを書きたいのですか?それから、私は何か書いたことを気にする必要はありません。 – CppLearner

+1

最初に、ビュー機能を作成するだけで、辞書の書き方はほぼ同じ数の文字を費やすことになります。 – Amber

関連する問題