1. ホーム
  2. python

[解決済み] なぜfrom __future__ import print_functionを使うとPython2スタイルのprintが壊れてしまうのですか?[クローズド]

2022-03-01 23:16:36

質問

私はpythonでプログラミングをするのが初めてで、separatorとendで印刷しようとしているのですが、やはりシンタックスエラーが出ます。

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
$

解決方法は?

まず最初に from __future__ import print_function は、スクリプトの最初の行である必要があります(以下に述べるいくつかの例外は除きます)。第二に、他の回答者が言うように、あなたは print を関数として使うようになりました。そのために from __future__ import print_function を持ってくることです。 print 機能 を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文はコンパイル時に認識され、特別に扱われます。 となります。コアコンストラクトのセマンティクスを変更することは、多くの場合 別のコードを生成して実装します。また、以下のようなケースも考えられます。 新しい機能は、互換性のない新しい構文(例えば、新しい この場合、コンパイラは モジュールは異なる。このような判断は、実行時まで先送りすることはできない。

また、ドキュメントによると __future__ 文は、モジュールのdocstring、コメント、空白行、および他の未来の文です。