0

最初の実行後に異なる結果が得られるアルゴリズムのテスト ケースがあります。

このテストでは、2 つのファイルからアルゴリズムとテスト データをインポートします。

最初の実行では正しい結果が返され、テスト データ ファイルの .pyc ファイルが作成されます。2 回目以降の実行では、正しくない結果が返されます。テスト データの .pyc ファイルを削除すると、次の実行で正しい結果が返されます (そして、新しい .pyc ファイルが再度作成されます)。

テスト データをテスト ケース自体と同じファイルに移動すると (つまり、.pyc ファイルの作成を回避する)、テストは常に成功します。

この修正を完全なプログラムに適用できません。

これは既知の問題ですか、修正はありますか?

4

2 に答える 2

1

.pyc ファイルには、Python インタープリターがソースをコンパイルするバイト コードが含まれています。このコードは、Python の仮想マシンによって実行されます。

Python のドキュメントでは、定義を次のように説明しています。

Python は、コンパイルされた言語とは対照的に、インタープリター言語ですが、バイトコード コンパイラーが存在するため、区別が曖昧になる場合があります。これは、実行可能ファイルを明示的に作成せずに、ソース ファイルを直接実行できることを意味します。

.pyc ファイルが作成される (場合によっては上書きされる) のは、その python ファイルが他のスクリプトによってインポートされた場合のみです。インポートが呼び出されると、Python は .pyc ファイルの内部タイムスタンプが対応する .py ファイルと一致するかどうかを確認します。存在する場合は、.pyc を読み込みます。存在しない場合、または .pyc がまだ存在しない場合、Python は .py ファイルを .pyc にコンパイルしてロードします。

于 2016-12-20T13:53:37.507 に答える
0

ファイルの値(.pyc と .py)が変更されていることがわかりました。これが原因で、スタック トレースを呼び出すユーティリティを作成することになりました。

于 2018-03-24T01:14:07.383 に答える