56

ステートメントと式の違いを理解し、Python3 が print() を関数に変えたことを理解しています。

ただし、さまざまな Python2.x インタープリターで括弧で囲まれた print() ステートメントを実行したところ、問題なく実行されました。モジュールをインポートする必要さえありませんでした。

私の質問: 次のコードはprint("Hello SO!")、Python2.x でステートメントまたは式として評価されますか?

4

3 に答える 3

62

次の式を検討してください。

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 で導入)

于 2012-08-28T15:37:19.117 に答える
20

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
于 2012-08-28T15:38:37.337 に答える
2

それはまだステートメントとして評価されます、あなたは単に印刷しています、それはタプルではないので("Hello SO!")単に評価し"Hello SO!"ます(delnanによって言及されたように)。

于 2012-08-28T15:32:21.720 に答える