Verwenden von print () (die functionsversion) in Python2.x

Ich verstehe den Unterschied zwischen einer statement und einem Ausdruck, und ich verstehe, dass Python3 print () zu einer function gemacht hat.

Allerdings habe ich eine print () -statement, die mit Klammern umgeben ist, auf verschiedenen Python2.x-Interpretern ausgeführt und es lief errorslos, ich musste nicht einmal ein Modul importieren.

Meine Frage: Wird der folgende Code print("Hello SO!") Als statement oder Ausdruck in Python2.x ausgewertet?

   

Betrachten Sie die folgenden Ausdrücke:

 a = ("Hello SO!") a = "Hello SO!" 

Sie sind gleichwertig. In gleicher Weise mit einer Aussage:

 statement_keyword("foo") statement_keyword "foo" 

sind auch gleichwertig.

Beachten Sie, dass, wenn Sie Ihre Druckfunktion zu ändern:

 print("Hello","SO!") 

Sie werden einen Unterschied zwischen Python 2 und Python 3 feststellen. Bei Python 2 wird das (...,...) als Tupel interptiert, da print eine statement ist, während es in Python 3 ein functionsaufruf mit mehreren Argumenten ist.

Daher wird print zur Beantwortung der Frage als eine statement in Python 2.x ausgewertet, es sei denn Sie from __future__ import print_function (eingeführt in Python 2.6)

print("Hello SO!") wird als statement print ("Hello SO!") ausgewertet, wobei das Argument der print statement der Ausdruck ("Hello SO!") .

Dies kann einen Unterschied machen, wenn Sie mehr als einen Wert drucken. zum Beispiel print("Hello", "world") druckt das 2-Element-Tupel ('Hello', 'world') anstelle der beiden Strings "Hello" und "world" .

Um mit Python 3 kompatibel zu sein, verwenden Sie from __future__ import print_function :

 >>> print("Hello", "world") ('Hello', 'world') >>> from __future__ import print_function >>> print("Hello", "world") Hello world 

Es wird immer noch als statement ausgewertet, Sie drucken einfach ("Hello SO!") , Was einfach zu "Hello SO!" da es kein Tupel ist (wie von Delnan erwähnt).