Python コードを使用する場合、eval 関数を使用して動的に評価されるコード内で構文エラーが発生する状況が発生することがあります。 。このようなエラーを検出することは可能ですが、ソース コード自体の構文エラーには当てはまりません。
この動作を理解するには、 Python での実行順序。コードが実行されると、Python コンパイラーはまずコードを解析してコンパイルし、バイトコードを生成します。このバイトコードは、Python 仮想マシン (PVM) によって解釈されます。
ソース コードに構文エラーがある場合、コンパイラーはエラーを検出し、コンパイル プロセスを停止します。その結果、コード内で定義された try/excel ブロックは決して機能しません。
ただし、eval を使用する場合、eval ステートメント内のコードは、周囲のコードの最初のコンパイルの後に個別にコンパイルされます。これは、2 回目のコンパイル実行中に eval ステートメント内の構文エラーが発生することを意味します。 Try/Except ブロックは最初のコンパイル時にすでに確立されているため、評価されたコードによって発生した構文エラーを検出することができます。
ソースコードはイライラするかもしれません。ただし、これは Python 実装に固有の制限です。コンパイラは、try/Except メカニズムがアクティブになる前に最初の実行を完了する必要があります。
ソース コード内の構文エラーを処理するには、コンパイル プロセスを複数回トリガーする方法を見つける必要があります。これは、次のような手法を使用して実現できます。
以上がeval されたコードでは構文エラーを検出できるのに、ソース コードでは構文エラーが検出できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。