「from __future__ import print_function」を使用すると、なぜ Python2 スタイルの印刷が壊れるのでしょうか? 質問する

「from __future__ import print_function」を使用すると、なぜ Python2 スタイルの印刷が壊れるのでしょうか? 質問する

このコードを Python 2.7 で試してみました:

from __future__ import print_function
import sys, os, time

for x in range(0,10):
    print x, sep=' ', end=''
    time.sleep(1)

しかし、次のようなエラーが表示されます:

$ python2 xy.py
  File "xy.py", line 5
    print x, sep=' ', end=''
          ^
SyntaxError: invalid syntax
$

インポートを使用するとステートメント内でand を__future__使用できるようになるはずだと思っていましたが、どうやらまったく機能しないようです。sependprint

なぜだめですか?

ベストアンサー1

の目的はfrom __future__ import print_functionprint 関数Python 3 から Python 2.6+ へ。したがって、ここでは関数のように使用する必要があります。

from __future__ import print_function

import sys, os, time

for x in range(0,10):
    print(x, sep=' ', end='')  # No need for sep here, but okay :)
    time.sleep(1)

__future__ステートメントは言語に関する基本的な事柄を変更します。ドキュメントより:

future ステートメントは、コンパイル時に認識され、特別に処理されます。コア構成要素のセマンティクスの変更は、多くの場合、異なるコードを生成することによって実装されます。新しい機能によって新しい互換性のない構文 (新しい予約語など) が導入される場合もあります。その場合、コンパイラはモジュールを別の方法で解析する必要があります。このような決定は、実行時まで延期することはできません。

(同じ理由で、それらはソース コード内で他の の前に出現する必要がありますimport。ステートメントの前に出現できるのは、__future__モジュールのドキュメント文字列、コメント、空白行、およびその他の将来のステートメントのみです。)

おすすめ記事