9

Python では、すべてがオブジェクトであり、簡単に渡すことができます。

だから私はできる:

>> def b():
   ....print "b"
>> a = b
>> a()
   b

でももしそうなら

a = print

私は得るSyntaxError。なんでそうなの ?

4

4 に答える 4

20

Python 2.xでは、printは関数ではなくステートメントです。2.6以降では、を使用して特定のモジュール内の関数にすることができますfrom __future__ import print_function。Python 3.xでは、これは渡すことができる関数です。

于 2012-08-03T16:21:54.260 に答える
6

python2では、printはステートメントです。あなたがそうするならばfrom __future__ import print_function、あなたはあなたが説明したようにすることができます。python3では、printが関数になっているため、試したものはインポートなしで機能します。

これはPEP3105でカバーされています

于 2012-08-03T16:22:39.650 に答える
4

他の答えは正しいです。 printはステートメントであり、python2.x の関数ではありません。あなたが持っているものはpython3で動作します。追加しなければならない唯一のことは、python2 と python3 で動作するものが必要な場合は、sys.stdout.write. これは ( とは異なりprint) 改行を書き込みません。他のファイル オブジェクトと同じように動作します。

于 2012-08-03T16:24:01.097 に答える
3

print3.x以前のPythonの関数ではありません。それは1つのようにも見えません、あなたはそれを呼び出す必要はありません(params)

于 2012-08-03T16:21:47.117 に答える