ステートメントと式の違いを理解し、Python3がprint()を関数に変えたことを理解しています。
しかし、さまざまなPython2.xインタープリターで括弧で囲まれたprint()ステートメントを実行し、問題なく実行されました。モジュールをインポートする必要さえありませんでした。
私の質問:次のコードprint("Hello SO!")
は、Python2.xのステートメントまたは式として評価されますか?
次の式を考慮してください。
a = ("Hello SO!")
a = "Hello SO!"
それらは同等です。同様に、次のステートメントを使用します。
statement_keyword("foo")
statement_keyword "foo"
同等です。
印刷機能を次のように変更すると、
print("Hello","SO!")
python 2とpython 3の違いに気付くでしょう。python 2では、printはステートメントであるのに対し、(...,...)
はタプルとしてインターセプトされますが、python 3では、これは、複数の引数を持つ関数呼び出しです。
したがって、当面の質問に答えるために、print
は、from __future__ import print_function
(python 2.6で導入された場合を除き)python 2.xのステートメントとして評価されます。
print("Hello SO!")
はステートメントprint ("Hello SO!")
として評価されます。print
ステートメントの引数は式_("Hello SO!")
_です。
これは、複数の値を印刷する場合に違いを生む可能性があります。たとえば、print("Hello", "world")
は、2つの文字列_('Hello', 'world')
_および_"Hello"
_ではなく、2要素のタプル_"world"
_を出力します。
Python 3との互換性のために_from __future__ import print_function
_を使用:
_>>> print("Hello", "world")
('Hello', 'world')
>>> from __future__ import print_function
>>> print("Hello", "world")
Hello world
_
それはまだステートメントとして評価されます。あなたは単に("Hello SO!")
を出力します。これはタプルではないので"Hello SO!"
に評価されます(delnanによると)。