web-dev-qa-db-ja.com

__future__ import print_functionの使い方

私はpythonを使ったプログラミングの初心者で、区切り記号と終わりを付けて印刷しようとしていますが、それでも構文エラーが発生します。python 2.7を使用しています。vimエディタからコーディングしています。

import sys, os, time
from __future__ import print_function

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

助けてください。そして私のコードを使って、実際にどこでfrom __future__ import print_functionを使うべきかを見せてくれてありがとう

103
UHMIS

まず第一に、from __future__ import print_functionはあなたのスクリプトのコードの最初の行である必要があります(以下に述べるいくつかの例外は別として)。第二に、他の答えが言ったように、あなたは今関数としてprintを使わなければなりません。それがfrom __future__ import print_functionの要点です。 Python 3からprint関数を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__ステートメントの前に来ることができる唯一のものがモジュールdocstring、コメント、空白行、および他の将来のステートメントであると述べています。

167
Cyphase