2

多くのフレームワークは、プログラムの残りの部分とは異なる言語で構成ファイルを保持しています。たとえば、Appengine は構成を yaml 形式で保持します。比較すると、DJango settings.py は Python モジュールです。これには多くの欠点があります。

プログラムの残りの部分と同じ言語であれば、私はできます

構成ファイルで興味深いことを行います。

 MEDIA_DIR = os.path.join(os.path.dir(__file__), 'media')
 #Or whaever the correct cals are, you get the idea.
  • 新しい(確かに軽量な)フォーマットを学ぶ必要はありません
  • 私のツールは期待どおりに動作します。
  • import confなどを行うことができます。

C/C++ などの重量級の言語であれば利点が見られますが、python の場合はなぜ意味があるのでしょうか。何の利益も加えずに力を奪うようなものです。

4

5 に答える 5

12

一部のフレームワーク設計者は、構成ファイルが重いロジックには不適切な場所であると感じています。MVC フレームワークがロジックを適切でない場所に配置できないように、構成ファイルはプログラミングを適切でない場所に配置できないようにします。

それは好みと哲学の問題です。

そうは言っても、私は Django の方法を好みます。

于 2009-10-29T09:03:45.023 に答える
5

自動/GUIツールを使用して、構成ファイルを解析および/または生成および/または変更する必要がある場合があります。conffileがPythonスクリプトの場合、これは簡単ではありません。

于 2009-10-29T09:47:22.693 に答える
5

appengine が実行される言語は必ずしも Python だけであるとは限りません。したがって、同じ yaml 構成ファイルで、Java や Perl などで記述された appengine アプリを駆動できます。

于 2009-10-29T09:06:07.303 に答える
2

非常に正当な理由があります。プログラムが安全でない環境 (ユーザーのコンピューターなど) に配布されている場合、簡単に変更できるテキスト ファイルを実行すると、多くのウイルスへの扉が開かれます。これは、アプリケーションがサーバー上でホストされている django アプリケーション (安全な環境) の場合にはあまり当てはまりません。しかし、py2exe を使用して Windows に配布されたアプリケーションでは、プログラムにランダムなものを実行させることは控えるべきです。

YAML のような構文を使用するもう 1 つの理由は、他のツール (他の言語であっても) を使用してファイルを操作できることです。形式は移植可能であり、十分に文書化されています。

そうは言っても、Python プログラムで構成ファイルが必要な場合は、いくつかのセキュリティ対策を備えた Python 辞書を使用します。

  • 囲んでいる { } を削除して、Python 式に直接評価されないようにする
  • safe_evalを使用して、実行可能なアイテムを破棄します。
于 2009-10-29T09:55:23.230 に答える
-1

彼らがそれを行うことができるということはおそらく彼らには思い浮かばなかったでしょう。多くのプログラマーは、スクリプト言語が遅く、プログラミング言語よりも実際には単純ではない昔から来ています(Unixシェルのようなものを見てください)。気の利いた動的言語が登場したとき、彼らは常に「テキストのみの構成ファイル」に固執していました。

于 2009-10-29T09:19:29.617 に答える