Python コードを使用する場合、eval 関数を使用して動的に評価されるコード内で構文エラーが発生する状況が発生することがあります。 。このようなエラーを検出することは可能ですが、ソース コード自体の構文エラーには当てはまりません。
この動作を理解するには、次のことを覚えておくことが重要です。 Python での実行順序。コードが実行されると、Python コンパイラーはまずコードを解析およびコンパイルしてバイトコードを生成します。このバイトコードは、Python 仮想マシン (PVM) によって解釈されます。
ソース コードに構文エラーがある場合、コンパイラーはエラーを検出し、コンパイル プロセスを停止します。したがって、コード内で定義されている try/excel ブロックは決して機能しません。
ただし、eval を使用する場合、eval ステートメント内のコードは、周囲のコードの最初のコンパイルの後に個別にコンパイルされます。これは、2 回目のコンパイル実行中に eval ステートメント内の構文エラーが発生することを意味します。 try/excel ブロックは最初のコンパイル時にすでに確立されているため、評価されたコードによって発生した構文エラーを検出できる可能性があります。
ソースコードはイライラするかもしれません。ただし、これは Python 実装に固有の制限です。コンパイラは、try/Except メカニズムがアクティブになる前に最初の実行を完了する必要があります。
ソース コード内の構文エラーを処理するには、コンパイル プロセスを複数回トリガーする方法を見つける必要があります。これは、次のような手法を使用して実現できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3