2009-05-05 10 views
232

Perché ricevo un errore di sintassi durante la stampa di una stringa in Python 3?Errore di sintassi su stampa con Python 3

>>> print "hello World" 
    File "<stdin>", line 1 
    print "hello World" 
        ^
SyntaxError: invalid syntax 
+15

suggerimento: per il codice di compatibilità in python 2.7+, inserire questo all'inizio del modulo: 'da __future__ import print_function' –

+0

... importazione print_function non sembra funzionare, è necessario modificare qualcosa nelle istruzioni di stampa ? o l'importazione dovrebbe farlo? – RMiranda

+5

Per la cronaca, questo caso riceverà un messaggio di errore personalizzato in Python 3.4.2: https://stackoverflow.com/questions/25445439/what-does-syntaxerror-missing-parentheses-in-call-to-print- mean-in-python/ – ncoghlan

risposta

314

In Python 3, printbecame a function. Questo significa che è necessario includere le parentesi ormai come di seguito indicate:

print("Hello World") 
18

In Python 3.0, print è una funzione regolare che richiede():

print("Hello world") 
15

Sembra che si sta utilizzando Python 3. In Python 3, la stampa è stato cambiato a un metodo, invece di una dichiarazione. Prova questo:

print("hello World") 
16

In Python 3, è print("something"), non print "something".

27

Perché in Python 3, print statement è stato sostituito con un print() function, con argomenti parola chiave per sostituire la maggior parte della sintassi speciale della vecchia istruzione di stampa. Quindi devi scrivere come

print("Hello World") 

Ma se si scrive questo in un programma e qualcuno utilizzando Python 2.x cerca di correre, si otterrà un errore. Per evitare questo, si tratta di una buona pratica funzione di

from __future__ import print_function 

Ora è il codice funziona sia 2.x & 3.x

Partenza seguito esempi anche per acquisire familiarità con print() per importare la funzione di stampa .

Old: print "The answer is", 2*2 
New: print("The answer is", 2*2) 

Old: print x,   # Trailing comma suppresses newline 
New: print(x, end=" ") # Appends a space instead of a newline 

Old: print    # Prints a newline 
New: print()   # You must call the function! 

Old: print >>sys.stderr, "fatal error" 
New: print("fatal error", file=sys.stderr) 

Old: print (x, y)  # prints repr((x, y)) 
New: print((x, y))  # Not the same as print(x, y)! 

Fonte: What’s New In Python 3.0?

5

In Python 2.X print è un keyword, mentre in Python 3.X print diventa una funzione, quindi il modo corretto per farlo è print(something).

È possibile ottenere l'elenco di parole chiave per ogni versione eseguendo il seguente:

>>> import keyword 
>>> keyword.kwlist 
7

è necessario utilizzare la staffa con stampa print("Hello World")

8

In Python 3, è necessario eseguire print('some code'). Questo perché in Python 3 è diventata una funzione.Se devi, puoi usare il tuo codice Python 2 e convertirlo in codice Python 3 usando 2to3 - è un ottimo programma integrato che viene fornito con Python. Per ulteriori informazioni, vedere Python 2to3 - Convert your Python 2 to Python 3 automatically!.