Pythonではすべてがオブジェクトであり、簡単に渡すことができます。はPythonで関数を出力していますか?
>> def b():
....print "b"
>> a = b
>> a()
b
をしかし、私は
a = print
を行う場合、私はSyntaxError
を得る:
だから私は行うことができます。なぜそうなのか ?
Pythonではすべてがオブジェクトであり、簡単に渡すことができます。はPythonで関数を出力していますか?
>> def b():
....print "b"
>> a = b
>> a()
b
をしかし、私は
a = print
を行う場合、私はSyntaxError
を得る:
だから私は行うことができます。なぜそうなのか ?
によってコールそれに必要としない、印刷は声明ない機能です。 2.6+では、それをfrom __future__ import print_function
を使用して、指定されたモジュール内の関数にすることができます。 Python 3.xでは、渡すことができる関数です。
print
は、3.x以前のPythonでは機能しません。それは、一つでも似ていない、あなたは、Python 2.xでは(params)
python2では、print
がステートメントです。 from __future__ import print_function
を行う場合は、あなたが説明したようにすることができます。あなたが試したことは、printが関数になったので、python3では何もインポートせずに動作します。
これはPEP3105
他の回答が正しいで覆われています。 print
は文であり、python2.xの関数ではありません。あなたが持っているものはpython3で動作します。私が追加しなければならないのは、python2とpython3で動作するものをお望みなら、sys.stdout.write
を渡すことができるということだけです。これは改行を書きません(print
と違って) - 他のファイルオブジェクトと同じように動作します。
+1 - 良い点 - 暗黙のEOLを追加する価値があるかもしれません... –
@JonClements - 良い点。更新しました。 – mgilson
'__future__'では+1です。 – mgilson
将来のステートメントは明示的です。それは、同じモジュール内でそれを期待するコードにのみ影響を与えるので、コードを壊すことはありません。 – jfs
@JFSebastian - ありがとう - 私はいつもそれをインタラクティブなインタプリタプロンプトでタイプされた将来のステートメントは、通訳セッション。 –