Ketika saya mencoba untuk menggunakan cetak
pernyataan di Python, itu memberi saya kesalahan ini:
>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^
SyntaxError: Missing parentheses in call to 'print'
Apa artinya?
Pesan kesalahan ini berarti bahwa anda sedang mencoba untuk menggunakan Python 3 untuk mengikuti contoh atau menjalankan program yang menggunakan Python 2 cetak
pernyataan:
print "Hello, World!"
Pernyataan di atas tidak bekerja di Python 3. Di Python 3, anda perlu menambahkan tanda kurung di sekitar nilai yang akan dicetak:
print("Hello, World!")
"SyntaxError: Hilang kurung di panggil untuk 'print'" adalah pesan kesalahan baru yang ditambahkan di Python 3.4.2 terutama untuk membantu pengguna yang mencoba untuk mengikuti Python 2 tutorial saat menjalankan Python 3.
Di Python 3, pencetakan nilai-nilai yang berubah dari menjadi berbeda pernyataan untuk menjadi biasa memanggil fungsi, sehingga sekarang membutuhkan tanda kurung:
>>> print("Hello, World!")
Hello, World!
Dalam versi sebelumnya dari Python 3, penerjemah hanya laporan generik kesalahan sintaks, tanpa memberikan petunjuk yang berguna tentang apa yang mungkin terjadi:
>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^
SyntaxError: invalid syntax
Adapun mengapa cetak
menjadi biasa function di Python 3, yang tidak't berhubungan dengan bentuk dasar dari pernyataan tersebut, tetapi lebih kepada bagaimana anda melakukan hal yang lebih rumit seperti pencetakan beberapa item ke stderr dengan trailing spasi daripada mengakhiri garis.
Di Python Versi 2:
>>> import sys
>>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6
1 2 3 4 5 6
Di 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
Mulai dengan Python 3.6.3 rilis pada bulan September tahun 2017, beberapa pesan kesalahan yang berhubungan dengan Python 2.x cetak sintaks telah diperbarui untuk merekomendasikan mereka Python 3.x-rekan:
>>> print "Hello!"
File "<stdin>", line 1
print "Hello!"
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?
Sejak "Hilang kurung di panggil untuk print" kasus ini adalah waktu kompilasi kesalahan sintaks dan karenanya memiliki akses ke kode sumber baku, it's dapat mencakup teks penuh pada seluruh garis pengganti yang disarankan. Namun, itu doesn't saat ini sedang mencoba untuk bekerja keluar yang sesuai kutipan untuk tempat di sekitar bahwa ekspresi (yang's tidak mungkin, hanya cukup rumit bahwa hal itu belum't pernah dilakukan).
The TypeError
yang diangkat untuk shift kanan operator juga telah disesuaikan:
>>> 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>)"?
Karena kesalahan ini muncul ketika kode berjalan, daripada bila disusun, itu doesn't memiliki akses ke kode sumber baku, dan oleh karena itu menggunakan meta-variabel (<message>
dan <output_stream>
) dalam mengusulkan penggantian ekspresi bukannya apa pun pengguna benar-benar mengetik. Tidak seperti kesalahan sintaks case, it's mudah untuk menempatkan tanda kutip Python ekspresi di custom shift kanan pesan kesalahan.
Sayangnya, tua xkcd komik isn't benar-benar up to date lagi.
Sejak Python 3.0 anda harus menulis:
print("Hello, World!")
Dan seseorang masih menulis yang anti-gravitasi
perpustakaan :(
Ada perubahan dalam sintaks dari Python 2 untuk Python 3. Di Python 2,
print "Hello, World!"
akan bekerja tetapi di Python 3, gunakan tanda kurung seperti
print("Hello, World!")
Ini adalah setara dengan sintaks untuk Scala dan dekat dengan Jawa.
Jika kode anda harus bekerja di kedua Python 2 dan 3, anda dapat mencapai ini dengan loading ini pada awal program anda:
from __future__ import print_function # If code has to work in Python 2 and 3!
Kemudian anda dapat mencetak di Python 3 cara:
print("python")
Jika anda ingin mencetak sesuatu tanpa membuat baris baru - anda dapat melakukan ini:
for number in range(0, 10):
print(number, end=', ')
Di luar jawaban langsung di sini, salah satu yang harus dicatat kunci lain perbedaan antara python 2 dan 3. The resmi python wiki masuk ke hampir semua perbedaan utama dan berfokus pada kapan anda harus menggunakan salah satu versi. Blog post juga melakukan pekerjaan yang baik menjelaskan saat python alam semesta dan entah bagaimana teka-teki yang belum terpecahkan bergerak untuk python 3.
Sejauh yang saya dapat memberitahu anda mulai belajar bahasa python. Anda harus mempertimbangkan artikel tersebut sebelum anda melanjutkan ke python 3 rute. Tidak hanya akan anda harus mengubah beberapa sintaks anda, anda juga akan perlu untuk berpikir tentang paket yang akan tersedia untuk anda (keuntungan dari python 2) dan potensi optimasi yang bisa dibuat dalam kode anda (keuntungan dari python 3).
Pada dasarnya, sejak Python 3.x, anda perlu menggunakan cetak
dengan tanda kurung.
Python 2.x: cetak "Lord of the Rings"
Python 3.x: print("Lord of the Rings")
cetak
adalah pernyataan di 2.x, tapi itu's a fungsi di 3.x. Sekarang, ada sejumlah alasan yang baik untuk hal ini.
barang = ['foo', 'bar', 'baz'] print(*item, sep='+') foo+bar+baz