de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 ncoghlan
ncoghlan
Question

Co oznacza "SyntaxError: Missing parentheses in call to 'print'" oznacza w języku Python?

Kiedy próbuję użyć instrukcji print w Pythonie, daje mi ten błąd:

>>> print "Hello, World!"
  File "<stdin>", line 1
    print "Hello, World!"
                        ^
SyntaxError: Missing parentheses in call to 'print'

Co to oznacza?

378 2014-08-22T10:58:51+00:00 3
Peter Mortensen
Peter Mortensen
Edytowane pytanie 5. czerwca 2018 в 4:27
Programowanie
python
python-3.x
Popular videos
PYTHON : What does &quot;SyntaxError: Missing parentheses in call to &#39;print&#39;&quot; mean in Python?
PYTHON : What does "SyntaxError: Missing parentheses in call to 'print'" mean in Python?
5 miesięcy temu
SyntaxError: Missing parentheses in call to &#39;print&#39;.
SyntaxError: Missing parentheses in call to 'print'.
11 miesięcy temu
SyntaxError Missing parentheses in call to &#39;print&#39;
SyntaxError Missing parentheses in call to 'print'
1 rok temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
 ncoghlan
ncoghlan
22. sierpnia 2014 в 10:58
2014-08-22T10:58:51+00:00
Więcej
Źródło
Edytuj
#25403858

Ten komunikat o błędzie oznacza, że próbujesz użyć Pythona 3 do wykonania przykładu lub uruchomienia programu, który używa instrukcji Pythona 2 print:

print "Hello, World!"

Powyższe stwierdzenie nie działa w Pythonie 3. W Pythonie 3 musisz dodać nawiasy wokół wartości, która ma zostać wydrukowana:

print("Hello, World!")

"SyntaxError: Missing parentheses in call to 'print' " jest nowym komunikatem o błędzie, który został dodany w Pythonie 3.4.2 głównie po to, aby pomóc użytkownikom, którzy próbują podążać za samouczkiem Pythona 2 podczas pracy z Pythonem 3.

W Pythonie 3, drukowanie wartości zmieniło się z odrębnej deklaracji na zwykłe wywołanie funkcji, więc teraz wymaga nawiasów:

>>> print("Hello, World!")
Hello, World!

We wcześniejszych wersjach Pythona 3 interpreter po prostu zgłasza ogólny błąd składni, nie dostarczając żadnych użytecznych wskazówek, co może być nie tak:

>>> print "Hello, World!"
  File "<stdin>", line 1
    print "Hello, World!"
                        ^
SyntaxError: invalid syntax

Jeśli chodzi o to, dlaczego print stał się zwykłą funkcją w Pythonie 3, nie odnosi się to do podstawowej formy deklaracji, ale raczej do tego, jak robić bardziej skomplikowane rzeczy, takie jak drukowanie wielu elementów na stderr ze spacją zamiast zakończenia linii.

W Pythonie 2:

>>> import sys
>>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6
1 2 3 4 5 6

W Pythonie 3:

>>> import sys
>>> print(1, 2, 3, file=sys.stderr, end=" "); print(4, 5, 6, file=sys.stderr)
1 2 3 4 5 6

Począwszy od wydania Pythona 3.6.3 we wrześniu 2017 r., niektóre komunikaty o błędach związane ze składnią drukowania Pythona 2.x zostały zaktualizowane, aby zalecać ich odpowiedniki w Pythonie 3.x:

>>> print "Hello!"
  File "<stdin>", line 1
    print "Hello!"
                 ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?

Ponieważ "Missing parentheses in call to print" case jest błędem składni czasu kompilacji, a więc ma dostęp do surowego kodu źródłowego, to'jest w stanie zawrzeć pełny tekst na pozostałej części linii w sugerowanym zamienniku. Jednakże, nie próbuje on obecnie wypracować odpowiednich cudzysłowów, które należy umieścić wokół tego wyrażenia (nie jest to'niemożliwe, tylko wystarczająco skomplikowane, że nie zostało zrobione).

Dostosowano również TypeError podnoszony dla operatora przesunięcia w prawo:

>>> 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>)"?

Ponieważ ten błąd jest wywoływany podczas działania kodu, a nie podczas jego kompilacji, nie ma on dostępu do surowego kodu źródłowego, a zatem używa metazmiennych (<message> i <output_stream>) w sugerowanym wyrażeniu zastępczym zamiast tego, co użytkownik faktycznie wpisał. W odróżnieniu od przypadku błędu składni, umieszczenie cudzysłowów wokół wyrażenia Pythona w niestandardowym komunikacie błędu prawego przesunięcia jest proste.

Peter Mortensen
Peter Mortensen
Edytowana odpowiedź 5. czerwca 2018 в 4:31
583
0
Sagar balai
Sagar balai
31. lipca 2017 в 6:46
2017-07-31T06:46:51+00:00
Więcej
Źródło
Edytuj
#25403860

Nastąpiła zmiana w składni z Pythona 2 na Pythona 3. W Pythonie 2,

print "Hello, World!" 

będzie działać, ale w Pythonie 3 należy użyć nawiasów jako

print("Hello, World!")

Jest to równoważna składnia do Scali i blisko do Javy.

 Georgy
Georgy
Edytowana odpowiedź 13. stycznia 2019 в 3:05
18
0
 Larry
Larry
26. maja 2017 в 12:09
2017-05-26T00:09:30+00:00
Więcej
Źródło
Edytuj
#25403859

W Pythonie 3, możesz drukować tylko jako:

print("STRING")

Ale w Pythonie 2 nawiasy nie są konieczne.

Peter Mortensen
Peter Mortensen
Edytowana odpowiedź 5. czerwca 2018 в 4:35
3
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Zuxriddin Muydinov
Zarejestrowany 12 godzin temu
2
Денис Анненский
Zarejestrowany 2 dni temu
3
365
Zarejestrowany 1 tydzień temu
4
True Image
Zarejestrowany 1 tydzień temu
5
archana agarwal
Zarejestrowany 1 tydzień temu
BG
CS
DA
DE
EL
ES
FI
FR
ID
IT
JA
KO
LT
NL
PL
PT
RU
SK
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem