0

さて、これは私がかなり長い間見た中で最も奇妙なことです。そこで、いつものように vs2012 を起動し、いくつかのインポートを開始します。使用しているモジュールがあり、モジュールのルートから静的インポートを介してインポートします。

import os
from foo.bar import bang

私はこれらをインタープリターで実行しています...そして突然、例外が機能しなくなりました。

と入力してassert 1 == 2も、何も起こりません。と入力しx[1]ても何も起こりません。x は定義されておらず、assertionerror も何もありません。

では、インタプリタを再起動して、アサーション ステートメントを実行します。それは正常に動作します。

誰もこのようなものを見たことがありますか?何が原因である可能性がありますか?(はい、それがインポートされたモジュールであることは知っていますが、かなりの量のコードであるため、詳細に飛び込む前に最初に調べておくべき場所ではないでしょうか?)

[編集]

インタラクティブでコマンドを実行するのにも時間がかかるようです.8dir()項目ほどの長さのリストを作成するのに3秒ほどかかりました.

4

1 に答える 1

3

1 つの可能性を次に示します。

import sys

def hook(type, value, traceback):
    pass

sys.excepthook = hook
assert 1 == 2

この場合、アサートは何も出力しません。これは、 if を確認することで確認できますsys.excepthook != sys.__excepthook__

注: たとえば、ipython はこの値でだまされます。したがって、これをテストする場合は、必ず and を使用pythonしないでipythonください。

于 2013-03-05T21:36:24.533 に答える