にstdoutに書き込むとき、私は、これはいくつかの奇妙な出力を与えることに気づいたとき、私はちょうどPythonのコンソールにsys.stdout.write()
で遊んでました。関数に渡されるすべてのwrite()
コール書かれた文字の数については、奇妙な出力コンソール
は、それぞれの出力に追加取得します。例えば、 foo bar7
が印刷される。
はさえ0
の出力に空の文字列の結果を渡します。
これは本当に唯一のPythonコンソールで起こるが、同じ文を使用してファイルを実行していないとき。さらに興味深いことに、それだけではPython 3のために起こるが、それはコンソールだけに起こるようではないが、この
Pythonの2のために、本当に私にとって問題ではない、それはこのように振る舞う、なぜ私は本当に不思議。
私のPythonバージョンは、Ubuntu 15.10で3.5.1です。
興味深い。だから、 'a = sys.stdout.write( 'foo')'は実際に何をするのかをこの挙動で明らかにする必要があります。この場合、 'a'は' 3'に設定され、数字は出力にもう追加されません。しかし、私はまだこれがPython 3でしか起こらないのだろうと思っています。Afaik私はまた、この文書の中で何の言及も見つけられません。 – critop
私は結果を示すスクリプトを添付して、より明確にしました。私は実際にこれについてのドキュメントを読んでいない、それはかなりの言語で発生し、それをテストしたので、私はそれを仮定した。私はこれを言及したPEPを探して、私がすればここに戻ってきます。 – Noctua
追加するだけで、Unicode文字をカウントします。 'sys.stdout.write( 'へllö')'は 'llö4"を返します – C14L