私は文と式の違いを理解していますが、Python3はprint()を関数に変換したことを理解しています。Python2.xのprint()(関数バージョン)の使用
しかし、さまざまなPython2.xインタプリタで括弧で囲まれたprint()ステートメントを実行したところ、完璧に実行されたため、モジュールをインポートする必要はありませんでした。
私の質問:次のコードprint("Hello SO!")
はPython2.xのステートメントまたは式として評価されていますか?
私は文と式の違いを理解していますが、Python3はprint()を関数に変換したことを理解しています。Python2.xの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 2とPython 3との違いに気付くでしょう印刷がステートメントであることから、(...,...)
はタプルとしてinterptetedされますPython 3では、複数の引数を持つ関数呼び出しです。したがって
print
は、Python 2.xでのステートメントとして評価されていない限り、あなた
from __future__ import print_function
声明
print ("Hello SO!")
、引数として評価され
これはまだ文として評価されています。単純に("Hello SO!")
と表示されます。これはタプルではないため、単に"Hello SO!"
と評価されます(delnanで説明したように)。
print("Hello SO!")
(のpython 2.6で導入されました) print
ステートメントは式("Hello SO!")
です。
これは、複数の値を印刷する場合に違いがあります。たとえばprint("Hello", "world")
は、2つの文字列"Hello"
と"world"
ではなく、2要素タプル('Hello', 'world')
を出力します。 Pythonの3使用from __future__ import print_function
との互換性のために
:
>>> print("Hello", "world")
('Hello', 'world')
>>> from __future__ import print_function
>>> print("Hello", "world")
Hello world
...が必要です。 – delnan
__future__からprint_functionをインポートすると、Python3で傷つきますか?インポートエラーは発生しません。 – sgoblin
@sgoblin - いいえ。 '__future__'モジュールは何もそれから削除されないことを保証します。それは事実上python3.xのno-opです – mgilson