1

私は kivy を使用して android 用の電卓を作成していますが、ほぼ完成しています (Python は私が知っている唯一の言語であるため、Java は使用できません)。それが機能する方法は、ユーザーが式を入力し、eval を使用してその式を評価することです。現時点では、私のアプリでは、eval 式に数値、数学演算子 (+、-、​​/、*)、および数学モジュールのほとんどの演算子 (つまり、関数電卓) を含めることができ、意図したとおりに動作します。将来的には、matplotlib を統合してグラフィカル機能をアプリに追加することを計画しています。したがって、コンテキスト内では、 eval は安全なオプションです。プログラミングの経験が限られているため、多くの状況で eval が安全でない方法だとは思いませんでした。eval の使用に関連する安全性の問題について議論しているスレッドに出くわしたのはほんの数日前のことです。

アプリ内で eval を別のものに変更する方が良いですか、それとも特定の状況で安全ですか? 前者に「はい」の場合、コードをあまり変更せずに最良の代替手段は何ですか。また、アプリのサイズを大きくしないように、Python標準ライブラリにあるとよいでしょう)

編集:ところで、 eval 式はリアルタイムで計算されます(これが重要かどうかはわかりません)。

4

1 に答える 1

1

この記事は役に立つはずです。まさにあなたがしようとしていることです。

一方、これは、注意しないとどうなるかについての良い警告です。おそらく、これを回避する良い方法があります (本当に簡単なスタートとして、2 つのアンダースコアを含む入力を除外するだけかもしれません) eval()

于 2013-01-25T04:50:20.063 に答える