Cara memperbaiki kesalahan sintaks python
Show
Ketika saya menghapus baris itu dari kode, kesalahan yang sama muncul di baris kode berikutnya, sekali lagi tanpa alasan yang jelas Apa artinya 5? Apa itu def square_all(numbers: return [ n**2 for n in numbers ] 6 dengan Python?Ini adalah cara Python untuk mengatakan "Saya tidak mengerti Anda". Python tahu bahwa apa yang Anda ketikkan bukanlah kode Python yang valid, tetapi tidak yakin saran apa yang akan diberikan kepada Anda Saat Anda beruntung, _6 Anda akan memiliki beberapa saran bermanfaat di dalamnya
Namun jika Anda kurang beruntung, Anda akan melihat pesan 8 tanpa tambahan apa pun
Pesan kesalahan ini tidak memberi kita petunjuk tentang apa yang mungkin terjadi di luar nomor baris dan sedikit sorotan yang menunjukkan di mana menurut Python kesalahan itu terjadi Penyebab def square_all(numbers: return [ n**2 for n in numbers ] 5Apa kemungkinan penyebab pesan kesalahan misterius ini? Ketika siswa Python saya mengalami kesalahan ini, penyebab yang paling mungkin adalah biasanya Itu banyak pilihan dan itu bukan satu-satunya pilihan. Bagaimana pendekatan Anda untuk memperbaiki masalah ini? Memperbaiki def square_all(numbers: return [ n**2 for n in numbers ] 5Langkah pertama dalam memperbaiki _6 adalah mempersempit masalahnyaSaya biasanya mengambil pendekatan dari
Lebih mudah untuk mengatasi pengecualian 5 yang ditakuti itu ketika Anda mengetahui penyebab paling umum. Mari kita coba membangun intuisi kita seputar 5 dengan menjelajahi penyebab umum dari pesan kesalahan iniMemutakhirkan Python meningkatkan pesan kesalahanSebelum masuk ke kesalahan tertentu, perhatikan bahwa memutakhirkan versi Python Anda dapat secara drastis meningkatkan kegunaan pesan kesalahan umum Ambil pesan kesalahan ini
Di Python 3. 10 terlihat sangat berbeda
Kami menjalankan file 4 yang sama dalam kedua kasus
Tapi Python 3. 10 menunjukkan pesan yang jauh lebih bermanfaat. nomor baris, posisi, dan pesan kesalahan itu sendiri semuanya jauh lebih jelas untuk banyak tanda kurung dan tanda kurung yang tidak tertutup pada Python 3. 10 ke atas Usus besar yang hilang yang ditakuti adalah contoh lain. Ekspresi apa pun yang memulai blok kode baru membutuhkan 5 di bagian akhirInilah kesalahan yang dilakukan Python 3. 9 pertunjukan untuk titik dua yang hilang
Dan inilah kesalahan yang sama di Python 3. 10
Jauh lebih membantu, bukan? Piton 3. 10 juga menyertakan pesan kesalahan yang lebih bersahabat saat Anda menggunakan 8 yang mungkin Anda maksudkan 9
Versi Python yang lebih baru menyertakan pesan kesalahan yang lebih bermanfaat untuk koma yang hilang, ekspresi 0 sebaris, kurung kurawal/kurung/tanda kurung yang tidak tertutup, dan banyak lagiJika Anda memiliki kemampuan untuk menjalankan kode Anda pada versi Python yang lebih baru, cobalah. Ini mungkin membantu Anda memecahkan masalah kesalahan sintaksis Anda dengan lebih efektif Hitung tanda kurung AndaMelupakan tanda kurung tutup, tanda kurung, dan kurung kurawal juga merupakan sumber umum kesalahan pengkodean Untungnya, versi Python baru-baru ini mulai mencatat tanda kurung yang tidak tertutup dalam pesan 6 merekaSaat menjalankan kode ini
Piton 3. 9 digunakan untuk menunjukkan _8
Tapi Python 3. 10 menunjukkan pesan kesalahan yang lebih membantu 0Namun terkadang Python bisa sedikit bingung saat menebak penyebab kesalahan. Ambil skrip _3 ini 1Saat menjalankan skrip ini, Python 3. 10 menunjukkan pesan kesalahan ini 2Masalahnya adalah ketiga pemanggilan metode _4 itu tidak memiliki tanda kurung tutupHitung tanda kurung Anda Banyak editor kode menyorot tanda kurung, tanda kurung, dan tanda kurung yang cocok (saat kursor berada di tanda kurung buka, tanda kurung tutup akan berubah warna). Gunakan editor kode Anda untuk melihat apakah setiap pasangan tanda kurung cocok dengan benar (dan pasangan yang cocok tampaknya benar) Kata kunci salah eja, hilang, atau salah tempatDapatkah Anda melihat apa yang salah dengan baris kode ini? _3Kami mencoba mendefinisikan suatu fungsi, tetapi kami salah mengeja 5 sebagai 6. Python tidak tahu apa yang kami coba lakukan, jadi itu menunjukkan kepada kami pesan 8 umum ituBagaimana dengan yang ini? _4Python menunjuk ke akhir pemahaman kita dan mengatakan ada kesalahan sintaksis. Tapi kenapa? Lihatlah sedikit lebih dekat. Ada sesuatu yang hilang dalam pemahaman kita Kami bermaksud mengetik ini 5Kami kehilangan _8 dalam komponen perulangan pemahaman kamiKata kunci yang salah eja dan kata kunci yang hilang sering kali menghasilkan 8 yang misterius itu, tetapi kata kunci tambahan juga dapat menyebabkan masalahAnda tidak dapat menggunakan kata-kata yang dicadangkan sebagai nama variabel di Python _6Python melihat kata itu _0 dan menganggap kita sedang mendefinisikan sebuah kelas. Tapi kemudian ia melihat tanda _8 dan menjadi bingung dan tidak tahu apa yang kami coba lakukan, jadi ia memasukkan tangannya ke dalam kesalahan dan berteriak 8Yang ini sedikit lebih misterius _7Kelihatannya benar, bukan? Dalam Python, ________22______3. 4 sintaks sebenarnya adalah 4. 3 sintaks. Kami bermaksud menulis ini sebagai gantinya _8Hati-hati dengan kata kunci yang salah eja, kata kunci yang hilang, dan sintaksis yang diatur ulang. Pastikan juga untuk tidak menggunakan kata-kata yang dicadangkan sebagai nama variabel (mis. g. 0, 8, dan 3 adalah nama variabel yang tidak valid)Masalah jarak halusDapatkah Anda melihat apa yang salah dalam kode ini? _9Perhatikan ruang ekstra di nama fungsi ( 0 bukannya 1)?Bisakah Anda mengidentifikasi apa yang salah di baris ini? _0Yang ini mungkin lebih sulit dikenali Semua yang ada di baris itu benar kecuali tidak ada spasi antara 5 dan 1Ketika satu karakter spasi valid, biasanya Anda juga dapat menggunakan lebih dari satu karakter spasi. Tetapi menambahkan spasi ekstra di tengah pengidentifikasi atau menghapus spasi di mana seharusnya ada spasi sering kali dapat menyebabkan kesalahan sintaksis Kutipan yang terlupakan dan kutipan tambahanJika Anda jarang membuat kode, Anda mungkin sering lupa memberi tanda kutip pada string Anda. Ini adalah kesalahan yang sangat umum, jadi yakinlah bahwa Anda tidak sendirian Kutipan yang terlupa terkadang dapat menghasilkan pesan kesalahan 8 yang samar ini _1Hati-hati dengan tanda kutip di dalam tanda kutip _2Anda harus beralih ke gaya kutipan yang berbeda (menggunakan tanda kutip ganda misalnya) atau menghindari tanda kutip tersebut Mencampur simbol AndaKadang-kadang sintaks Anda mungkin terlihat benar tetapi Anda sebenarnya telah mengacaukan satu bit sintaks dengan sintaks umum lainnya Itulah yang terjadi di sini _3Kami mencoba membuat kamus dan kami tidak sengaja menggunakan 8 alih-alih 5 untuk memisahkan pasangan nilai kunci kamiIni simbol kamus lain yang bercampur _4Sepertinya kita mencoba mendefinisikan kamus, tetapi kita mulai dengan tanda kurung siku terbuka ( 7) alih-alih tanda kurung kurawal terbuka ( 8)Kesalahan sintaks umum lainnya adalah periode yang hilang _5Kami mencoba mengakses atribut _9 pada objek yang dikembalikan dari panggilan 0 itu, tetapi kami lupa meletakkan 1 sebelum 9Terkadang kesalahan sintaksis disebabkan oleh karakter yang ditukar _6Dan beberapa kesalahan sintaks disebabkan oleh simbol tambahan yang tidak ingin Anda tulis _7Kami menulis tambahan _1 sebelum tanda kurung kami di atasKesalahan lekukan yang disamarkanTerkadang _6 sebenarnya merupakan kesalahan indentasi yang disamarkanMisalnya kode ini memiliki klausa _5 yang indentasinya terlalu jauh _8Saat kami menjalankan kode, kami akan melihat 6 _9Masalah lekukan sering kali menghasilkan 7 pengecualian, tetapi terkadang mereka akan bermanifestasi sebagai 6 pengecualian sebagai gantinyaMenyematkan pernyataan di dalam pernyataan"Pernyataan" adalah blok kode Python atau satu baris kode Python yang dapat berdiri sendiri "Ekspresi" adalah potongan kode Python yang mengevaluasi nilai. Ekspresi berisi pengidentifikasi (i. e. variabel), literal (mis. g. _9, 00, dan 01), dan operator (e. g. 02, 8, dan 04)Di Python kita bisa menyematkan satu ekspresi di dalam yang lain. Tetapi beberapa ekspresi sebenarnya adalah "pernyataan" yang harus berupa garis sendiri-sendiri Di sini kami telah mencoba menyematkan satu pernyataan di dalam pernyataan lainnya 0Tugas adalah pernyataan dalam Python ( 05 adalah pernyataan). _8 Python juga merupakan pernyataan. Kami telah mencoba menyematkan satu pernyataan di dalam yang lain dan Python tidak memahami kamiKami mungkin bermaksud baik ini 1Atau ini 2Inilah masalah yang sama dengan pernyataan _07 (lihat menugaskan ke variabel global) 3Dan masalah yang sama dengan pernyataan _08 4Jika penugasan terlibat dalam pernyataan-di dalam-pernyataan Anda, ekspresi penugasan (dalam operator Python walrus) dapat membantu dalam menyelesaikan masalah Anda. Meskipun seringkali solusi paling sederhana adalah membagi kode Anda menjadi beberapa pernyataan dalam beberapa baris Kesalahan yang hanya muncul di Python REPLBeberapa kesalahan agak kurang membantu dalam Python Ambil kesalahan _8 ini 5Kita akan melihat kesalahan itu di dalam Python REPL bahkan di Python 3. 11 Masalahnya adalah baris pertama tidak memiliki tanda kurung tutup. Piton 3. 10+ akan menunjukkan hal ini dengan benar jika kami menjalankan kode kami dari file 10 sebagai gantinya
Tetapi di REPL Python tidak mem-parsing kode kita dengan cara yang sama (mem-parsing blok demi blok di REPL) dan terkadang pesan kesalahan sedikit kurang membantu dalam REPL sebagai hasilnya Inilah kesalahan khusus REPL lainnya 7Ini adalah kode Python yang valid 8Tapi itu tidak bisa disalin-tempel langsung ke REPL. Dalam REPL Python, baris kosong diperlukan setelah blok kode untuk mengakhiri blok itu Jadi kita perlu meletakkan baris baru antara definisi fungsi dan pemanggilan fungsi _9Beberapa kesalahan disebabkan oleh kode yang terasa seperti seharusnya bekerja di Python REPL tetapi tidak. Misalnya menjalankan _11 dari dalam Python REPL Anda tidak berfungsi 0Perintah di atas akan berfungsi dari command-prompt sistem kami, tetapi tidak berfungsi dalam Python REPL Jika Anda mencoba meluncurkan Python atau mengirim perintah ke prompt Anda di luar Python (seperti 12 atau 13), Anda harus melakukannya dari prompt perintah sistem Anda (Terminal, Powershell, Command Prompt, dll. ). Anda hanya dapat mengetikkan kode Python yang valid dari dalam Python REPLMasalah salin-tempel dari REPLCopy-paste dari Python REPL ke file 10 juga akan mengakibatkan kesalahan sintaksInilah kami menjalankan file yang memiliki 15 awalan sebelum setiap baris _1Ini bukan program Python yang valid Tapi ini adalah program Python yang valid Anda harus berhati-hati dengan baris kosong saat menyalin-tempel dari file 10 ke Python REPL dan Anda harus berhati-hati tentang 15 dan 18 prefiks dan output perintah saat menyalin-menempel dari REPL ke file 10Nomor baris hanyalah "tebakan terbaik"Dulu nomor baris untuk kesalahan biasanya mewakili tempat di mana Python bingung tentang sintaks Anda. Nomor baris itu seringkali satu atau lebih baris setelah kesalahan yang sebenarnya Dalam versi terbaru Python, pengembang inti telah memperbarui nomor baris ini dalam upaya membuatnya lebih akurat Misalnya inilah kesalahan pada Python 3. 9 karena koma yang hilang
Dan inilah kesalahan yang sama di Python 3. 10 _3Python memberi kami petunjuk bermanfaat tentang Python 3. 10. Tapi itu juga membuat tebakan berbeda tentang kesalahan di baris mana Seperti yang Anda lihat dari file 20, baris 3 ( 21) adalah tebakan yang lebih baik dalam kasus ini, karena di situlah koma diperlukan _4Saat menguraikan traceback, perlu diingat bahwa nomor baris hanyalah tebakan terbaik Python tentang di mana kesalahan terjadi Jika kode Anda sering menghasilkan 6 pengecualian, jangan khawatir. Pengecualian semacam ini terjadi setiap saat. Ketika Anda baru mengenal Python, Anda akan menemukan bahwa seringkali sulit untuk mengingat sintaks yang tepat untuk pernyataan yang Anda tulisTetapi pemrogram Python yang lebih berpengalaman juga mengalami kesalahan sintaksis. Saya cukup sering membuat kesalahan ketik dalam kode saya. Saya memiliki linter yang diinstal di editor teks saya untuk membantu saya menangkap kesalahan ketik itu. Saya sarankan mencari ekstensi "Python" atau "Python linter" untuk editor kode favorit Anda sehingga Anda dapat menemukan masalah ini dengan cepat setiap kali Anda menyimpan file 10 AndaSetelah Anda melewati kesalahan sintaksis, kemungkinan besar Anda akan menemukan jenis pengecualian lainnya. Tonton seri screencast pengecualian untuk mengetahui lebih lanjut tentang membaca traceback dan penanganan pengecualian di Python Mengapa saya mendapatkan kesalahan sintaks di Python?Beberapa penyebab paling umum dari kesalahan sintaks di Python adalah. Kata kunci cadangan salah eja . Kutipan tidak ada. Ruang yang diperlukan tidak ada.
Bisakah kita menangani kesalahan sintaksis dengan Python?Penerjemah melihat sintaks yang tidak valid selama fase penguraiannya dan memunculkan pengecualian SyntaxError. Program berhenti dan gagal pada titik di mana kesalahan sintaks terjadi. Itu sebabnya kesalahan sintaks adalah pengecualian yang tidak dapat ditangani
Apa kesalahan sintaks dalam contoh Python?Kesalahan sintaks adalah kesalahan dalam penggunaan bahasa Python, dan analog dengan kesalahan ejaan atau tata bahasa dalam bahasa seperti bahasa Inggris. misalnya, kalimat Maukah Anda minum teh? tidak masuk akal – tidak ada kata kerja di dalamnya . Kesalahan sintaks umum Python termasuk. meninggalkan kata kunci.
Apa yang digunakan untuk memperbaiki kesalahan sintaks?Pemrogram pemula berjuang dengan tata bahasa yang kompleks dari bahasa pemrograman modern seperti Java, dan membuat banyak kesalahan sintaksis |