Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】文字列として書かれたPythonコードを実行する方法:exec()とeval()の使い分け

exec()でPythonのステートメントを実行する

文字列として記述されたPythonのコード(ステートメント)を実際に実行したい場合は、組み込み関数のexec()を使用します。引数に渡された文字列がPythonのコードとして解釈され、その場で実行されます。

>>> my_code = 'print("Hello World!")'
>>> exec(my_code)
Hello World!

上記の例では、変数my_codeに格納された文字列がexec()によってコードとして評価され、「Hello World!」が出力されています。

eval()で式の値を評価する

一方、ステートメントを実行したいのではなく、単に式(expression)の値を評価して結果を受け取りたいだけであれば、eval()関数が適しています。eval()は文字列を式として評価し、その計算結果を戻り値として返します。

>>> my_expression = "5 + 3"
>>> eval(my_expression)
8

このように、eval()は文字列「5 + 3」を数式として処理し、結果の8を返しています。両者の違いは、exec()が「実行」を行うのに対し、eval()は「評価して値を返す」という点です。

使用時の注意点:セキュリティリスクに要注意

exec()eval()は非常に強力な関数である反面、扱い方を誤ると深刻な問題を引き起こす可能性があります。特に、ユーザーからの入力など信頼できない文字列をそのまま渡すと、悪意のあるコードを実行される「コードインジェクション」攻撃への脆弱性につながる恐れがあります。

安全に使うために、以下のポイントを押さえておきましょう。

  • 実行する文字列の出所が完全に信頼できる場合にのみ使用する
  • ユーザー入力や外部から取得したデータを直接渡さない
  • 可能であれば、辞書や条件分岐など、より安全な代替手段を検討する

これらの関数はデバッグ用途や動的な処理で便利ですが、本番環境での利用は最小限にとどめ、必ずリスクを理解した上で使用することが重要です。

  1. Pythonで文字列を逆順にする方法を徹底解説!初心者向け5つの実装テクニック

    Pythonには、文字列を逆順に並べ替えるための組み込み関数が用意されていません。そのため、文字列を反転させたい場合は、自分でロジックを実装する必要があります。本記事では、Pythonで文字列を逆順にする代表的な5つの方法を、コード例とともにわかりやすく解説します。それぞれの特徴やパフォーマンスの違いも紹介するので、目的に合った手法を選ぶ参考にしてください。方法1:forループを使うこの方法の基本的な考え方は、文字列の最後のインデックスから0番目のインデックスへ向かって逆方向にループ処理を行うことです。各イテレーションで文字列の文字を取り出し、新しい文字列の末尾に追加していくことで、ループ終了

  2. Google ColaboratoryでPythonコードを実行する方法を徹底解説

    Google Colaboratory(通称:Colab)は、面倒なセットアップ不要でブラウザ上ですぐに使える、無料のクラウド型Jupyterノートブック環境です。Googleのクラウド上でホストされており、Pythonスクリプトをクラウド環境で実行・テストしたい開発者のためにGoogleが提供・運用しています。本記事では、Google Colaboratoryの環境を立ち上げてから、実際にPythonコードを記述・実行するまでの一連の手順を、初心者の方にもわかりやすく解説します。1. Pythonノートブックを開くまず、Google Colabの公式サイト(https://colab.res