Când m-am încercați să utilizați un print
declarație în Python, imi da aceasta eroare:
>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^
SyntaxError: Missing parentheses in call to 'print'
Ce înseamnă asta?
Acest mesaj de eroare înseamnă că vă sunt încercarea de a utiliza Python 3 să urmeze un exemplu sau de a rula un program care foloseste Python 2 "imprimare" declarație:
print "Hello, World!"
Declarația de mai sus nu funcționează în Python 3. În Python 3, aveți nevoie să adăugați paranteze în jurul valorii de a fi tipărite:
print("Hello, World!")
"SyntaxError: Lipsă paranteze în apel la 'imprima'" este un nou mesaj de eroare care s-a adăugat în Python 3.4.2 în primul rând pentru a ajuta utilizatorii care încearcă să urmeze un Piton 2 tutorial în timp ce rulează Python 3.
În Python 3, valorile de imprimare s-a schimbat de la a fi o incursiune declarație a fi un obișnuit apel de funcție, așa că acum are nevoie de paranteze:
>>> print("Hello, World!")
Hello, World!
În versiunile anterioare de Python 3, interpretul doar rapoarte generic de eroare de sintaxă, fără a oferi sfaturi utile cu privire la ceea ce ar putea merge greșit:
>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^
SyntaxError: invalid syntax
Ca de ce "imprimare" a devenit un obișnuit funcții în Python 3, care nu't se referă la forma de bază de declarație, ci mai degrabă la cum ai făcut lucruri mai complicate cum ar fi imprimarea mai multor elemente pentru a stderr cu un spațiu la final, mai degrabă decât se termină linia.
În Python 2:
>>> import sys
>>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6
1 2 3 4 5 6
În Python 3:
>>> import sys
>>> print(1, 2, 3, file=sys.stderr, end=" "); print(4, 5, 6, file=sys.stderr)
1 2 3 4 5 6
Începând cu Python 3.6.3 de presă în luna septembrie 2017, unele mesaje de eroare legat de Python 2.x imprimare de sintaxă au fost actualizate pentru a recomanda Python 3.x omologii:
>>> print "Hello!"
File "<stdin>", line 1
print "Hello!"
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?
De la "Lipsă paranteze în apel la print" caz, este o compilare eroare de sintaxă și, prin urmare, are acces la prime codul sursă, se's în stare să cuprindă textul integral pe restul liniei în a sugerat înlocuirea. Cu toate acestea, nu't în prezent, încercați să lucreze corespunzătoare citate pentru a plasa în jurul valorii de această expresie (ca's nu imposibil, doar suficient de complicat, care nu a't a fost făcut).
La Nume
a ridicat pentru dreptul de schimbare a operatorului a fost, de asemenea, personalizate:
>>> print >> sys.stderr
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?
Deoarece această eroare este ridicat atunci când codul se execută, mai degrabă decât atunci când este compilat, nu't au acces la prime codul sursă, și, prin urmare, folosește meta-variabile (<mesaj> " și " <output_stream>
) în a sugerat înlocuirea expresie în loc de orice utilizator introdus, de fapt. Spre deosebire de eroare de sintaxă caz, l's simplu de citate loc în jurul Python exprimare în obiceiul de schimbare drept un mesaj de eroare.
Din păcate, vechiul xkcd benzi desenate e't complet până la data de mai.
Deoarece Python 3.0 trebuie să scrie:
print("Hello, World!")
Și cineva trebuie încă să scrie că antigravity
biblioteca :(
Există o schimbare în sintaxa de Python 2 pentru Python 3. În Python 2,
print "Hello, World!"
va funcționa, dar în Python 3, utilizați paranteze ca
print("Hello, World!")
Acest lucru este echivalent sintaxa pentru a Scala și în apropiere de Java.
În cazul în care codul ar trebui să funcționeze în ambele Python 2 și 3, puteți realiza acest lucru prin încărcarea acest lucru la începutul programului:
from __future__ import print_function # If code has to work in Python 2 and 3!
Apoi, aveți posibilitatea de a imprima în Python 3 mod:
print("python")
Dacă doriți să imprimați ceva, fără a crea o nouă linie - puteți face acest lucru:
for number in range(0, 10):
print(number, end=', ')
In afara de răspunsuri directe aici, unul ar trebui să rețineți altă diferență cheie între python 2 și 3. De oficial python wiki merge în aproape toate marile diferențe și se concentrează pe când ar trebui să utilizați oricare dintre versiuni. Acest post pe blog, de asemenea, face o treabă bună de a explica actuala python univers și cumva nerezolvate puzzle de mișcare pentru python 3.
În măsura în care pot spune, încep să învețe limbajul python. Tu ar trebui să ia în considerare articolele menționate anterior înainte de a continua pe python 3 traseu. Nu numai că va trebui să schimbe unele de sintaxa, de asemenea, va trebui să se gândească la ce pachete vor fi disponibile pentru tine (un avantaj de python 2) și potențialul de optimizări care ar putea fi făcute în cod (un avantaj de python 3).
Practic, deoarece Python 3.x aveți nevoie pentru a utiliza "imprimare" cu paranteze.
Python 2.x: print "Lord of the Rings"
Python 3.x: print("Lord of the Rings")
"imprimare" a fost o declarație in 2.x, dar's a funcția in 3.x. Acum, există o serie de motive bune pentru acest lucru.
articole = ['foo', 'bar', 'baz'] print(*articole, sep='+') foo+bar+baz