最初にコードを書く
リーリー問題: コメントに書いたように、TestWriter.write() を呼び出したときに sys.stdout のリダイレクトされた出力が実装されていませんでしたが、その後の出力により、標準出力がファイル f オブジェクトにリダイレクトされたことがわかりました。
ブレークポイントを追跡すると、self.stream も f オブジェクトとして表示されます
疑問を解決しましょう! ! !
巴扎黑2017-05-18 10:50:16
リーリー
Pythonが各関数を作成するとき、各パラメータはバインドされ、値が変更されてもデフォルト値はリロードされません
リーリーただし、バインディングパラメータのデフォルトパラメータがアドレスにバインドされている場合は異なりますが、アドレスは変更されませんが、内容は変更される可能性があります。
リーリー阿神2017-05-18 10:50:16
対照的に、Python では、実行は 1 つのファイルの先頭から始まり、ファイル内の各ステートメントを明確に定義された順序で進みます。...
http://stackoverflow.com/ques...
Python は各ステートメントを順番に解釈するため、TestWriter
的构造器参数stdout
はリダイレクトされません。
上記はすべて私の推測です
================================================ === ====================
リーリー実行結果