このコードを 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__
使用できるようになるはずだと思っていましたが、どうやらまったく機能しないようです。sep
end
print
なぜだめですか?
ベストアンサー1
の目的は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 ステートメントは、コンパイル時に認識され、特別に処理されます。コア構成要素のセマンティクスの変更は、多くの場合、異なるコードを生成することによって実装されます。新しい機能によって新しい互換性のない構文 (新しい予約語など) が導入される場合もあります。その場合、コンパイラはモジュールを別の方法で解析する必要があります。このような決定は、実行時まで延期することはできません。
(同じ理由で、それらはソース コード内で他の の前に出現する必要がありますimport
。ステートメントの前に出現できるのは、__future__
モジュールのドキュメント文字列、コメント、空白行、およびその他の将来のステートメントのみです。)