私は小さなテンプレート エンジンをハッキングしています。私は、動的に生成されたコードの文字列を生成するクラス (テンプレート コンパイラーという名前) を持っています。
例えば :
def dynamic_function(arg):
#statement
return rendered_template
レンダリング時に、カスタムグローバルディクショナリを使用して、このコードに対して組み込み関数execを呼び出します(潜在的な悪意のあるユーザーによってテンプレートに挿入されたコードを可能な限り制御するため)。
ただし、コンパイルされたテンプレートをキャッシュして、実行ごとにコンパイルしないようにする必要があります。文字列をプレーンテキストとして保存し、毎回ロードするか、コンパイルを使用して code_object を生成し、そのオブジェクトを保存する (たとえば、 shelve モジュールを使用する) 方が良いのだろうかと思います。
最終的には、テンプレート エンジンをスレッド セーフにしたいと考えています。
読んでくれてありがとう!トーマス
編集:S.Lottが下線を引いているので、それ自体には意味がありません。つまり、より速く、より少ないメモリを消費し、よりシンプルで簡単にデバッグできるということです。もちろん、無料のコーヒーがもっとおいしければもっと良かったのですが。