ステートメントと式の違いを理解し、Python3 が print() を関数に変えたことを理解しています。
ただし、さまざまな Python2.x インタープリターで括弧で囲まれた print() ステートメントを実行したところ、問題なく実行されました。モジュールをインポートする必要さえありませんでした。
私の質問: 次のコードはprint("Hello SO!")
、Python2.x でステートメントまたは式として評価されますか?
ステートメントと式の違いを理解し、Python3 が print() を関数に変えたことを理解しています。
ただし、さまざまな Python2.x インタープリターで括弧で囲まれた print() ステートメントを実行したところ、問題なく実行されました。モジュールをインポートする必要さえありませんでした。
私の質問: 次のコードはprint("Hello SO!")
、Python2.x でステートメントまたは式として評価されますか?
次の式を検討してください。
a = ("Hello SO!")
a = "Hello SO!"
それらは同等です。同様に、次のステートメントを使用します。
statement_keyword("foo")
statement_keyword "foo"
も同等です。
print 関数を次のように変更した場合に注意してください。
print("Hello","SO!")
Python 2 と Python 3 の違いに気付くでしょう(...,...)
。Python 2 では print がステートメントであるため、 はタプルとして解釈されますが、Python 3 では複数の引数を持つ関数呼び出しです。
したがって、当面の質問に答えるにはprint
、python 2.x でステートメントとして評価されない限りfrom __future__ import print_function
(python 2.6 で導入)
print("Hello SO!")
はステートメントとして評価されprint ("Hello SO!")
ます。ここで、ステートメントの引数print
は式("Hello SO!")
です。
これは、複数の値を出力する場合に違いを生む可能性があります。たとえば、2 つの文字列との代わりにprint("Hello", "world")
2 要素のタプルを出力します。('Hello', 'world')
"Hello"
"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によって言及されたように)。