Cara memperbaiki kesalahan sintaks python

Pmin, Pmax, w, fi1 dan fi2 semuanya telah ditetapkan pada titik ini, jadi mengapa ada kesalahan?

Ketika saya menghapus baris itu dari kode, kesalahan yang sama muncul di baris kode berikutnya, sekali lagi tanpa alasan yang jelas

Apa artinya

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
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,

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
_6 Anda akan memiliki beberapa saran bermanfaat di dalamnya

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'

Namun jika Anda kurang beruntung, Anda akan melihat pesan

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
8 tanpa tambahan apa pun

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax

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 ] 5

Apa 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 ] 5

Langkah pertama dalam memperbaiki

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
_6 adalah mempersempit masalahnya

Saya biasanya mengambil pendekatan dari

  1. Catat nomor baris dan pesan kesalahan dari traceback, perlu diingat bahwa keduanya hanya menebak buatan Python
  2. Bekerja melalui
  3. Mencoba membaca kode seperti yang dilakukan Python, mencari kesalahan sintaksis
  4. Mempersempit masalah dengan menghapus blok kode yang saya curigai mungkin penyebabnya

Lebih mudah untuk mengatasi pengecualian

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
5 yang ditakuti itu ketika Anda mengetahui penyebab paling umum. Mari kita coba membangun intuisi kita seputar
def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
5 dengan menjelajahi penyebab umum dari pesan kesalahan ini

Memutakhirkan Python meningkatkan pesan kesalahan

Sebelum masuk ke kesalahan tertentu, perhatikan bahwa memutakhirkan versi Python Anda dapat secara drastis meningkatkan kegunaan pesan kesalahan umum

Ambil pesan kesalahan ini

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax

Di Python 3. 10 terlihat sangat berbeda

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed

Kami menjalankan file

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: invalid syntax
4 yang sama dalam kedua kasus

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]

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

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: invalid syntax
5 di bagian akhir

Inilah kesalahan yang dilakukan Python 3. 9 pertunjukan untuk titik dua yang hilang

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: invalid syntax

Dan inilah kesalahan yang sama di Python 3. 10

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'

Jauh lebih membantu, bukan?

Piton 3. 10 juga menyertakan pesan kesalahan yang lebih bersahabat saat Anda menggunakan

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: invalid syntax
8 yang mungkin Anda maksudkan
$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: invalid syntax
9

>>> name = "Trey"
>>> if name = "Trey":
  File "", line 1
    if name = "Trey":
       ^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

Versi Python yang lebih baru menyertakan pesan kesalahan yang lebih bermanfaat untuk koma yang hilang, ekspresi

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'
0 sebaris, kurung kurawal/kurung/tanda kurung yang tidak tertutup, dan banyak lagi

Jika 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 Anda

Melupakan 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

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
6 mereka

Saat menjalankan kode ini

def colors():
    c = ['red',
        'blue',
    return c

Piton 3. 9 digunakan untuk menunjukkan

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
_8

$ python3.9 colors.py
  File "/home/trey/colors.py", line 4
    return c
    ^
SyntaxError: invalid syntax

Tapi Python 3. 10 menunjukkan pesan kesalahan yang lebih membantu

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
0

Namun terkadang Python bisa sedikit bingung saat menebak penyebab kesalahan. Ambil skrip

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'
_3 ini

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
1

Saat menjalankan skrip ini, Python 3. 10 menunjukkan pesan kesalahan ini

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
2

Masalahnya adalah ketiga pemanggilan metode

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'
_4 itu tidak memiliki tanda kurung tutup

Hitung 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 tempat

Dapatkah Anda melihat apa yang salah dengan baris kode ini?

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
_3

Kami mencoba mendefinisikan suatu fungsi, tetapi kami salah mengeja

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'
5 sebagai
$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'
6. Python tidak tahu apa yang kami coba lakukan, jadi itu menunjukkan kepada kami pesan
def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
8 umum itu

Bagaimana dengan yang ini?

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
_4

Python 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

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
5

Kami kehilangan

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'
_8 dalam komponen perulangan pemahaman kami

Kata kunci yang salah eja dan kata kunci yang hilang sering kali menghasilkan

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
8 yang misterius itu, tetapi kata kunci tambahan juga dapat menyebabkan masalah

Anda tidak dapat menggunakan kata-kata yang dicadangkan sebagai nama variabel di Python

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
_6

Python melihat kata itu

>>> name = "Trey"
>>> if name = "Trey":
  File "", line 1
    if name = "Trey":
       ^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
_0 dan menganggap kita sedang mendefinisikan sebuah kelas. Tapi kemudian ia melihat tanda
$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: invalid syntax
_8 dan menjadi bingung dan tidak tahu apa yang kami coba lakukan, jadi ia memasukkan tangannya ke dalam kesalahan dan berteriak
def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
8

Yang ini sedikit lebih misterius

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
_7

Kelihatannya benar, bukan?

Dalam Python, ________22______3.

>>> name = "Trey"
>>> if name = "Trey":
  File "", line 1
    if name = "Trey":
       ^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
4 sintaks sebenarnya adalah
>>> name = "Trey"
>>> if name = "Trey":
  File "", line 1
    if name = "Trey":
       ^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
4.
>>> name = "Trey"
>>> if name = "Trey":
  File "", line 1
    if name = "Trey":
       ^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
3 sintaks. Kami bermaksud menulis ini sebagai gantinya

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
_8

Hati-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.

>>> name = "Trey"
>>> if name = "Trey":
  File "", line 1
    if name = "Trey":
       ^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
0,
>>> name = "Trey"
>>> if name = "Trey":
  File "", line 1
    if name = "Trey":
       ^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
8, dan
>>> name = "Trey"
>>> if name = "Trey":
  File "", line 1
    if name = "Trey":
       ^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
3 adalah nama variabel yang tidak valid)

Masalah jarak halus

Dapatkah Anda melihat apa yang salah dalam kode ini?

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
_9

Perhatikan ruang ekstra di nama fungsi (

def colors():
    c = ['red',
        'blue',
    return c
0 bukannya
def colors():
    c = ['red',
        'blue',
    return c
1)?

Bisakah Anda mengidentifikasi apa yang salah di baris ini?

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_0

Yang ini mungkin lebih sulit dikenali

Semua yang ada di baris itu benar kecuali tidak ada spasi antara

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'
5 dan
def colors():
    c = ['red',
        'blue',
    return c
1

Ketika 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 tambahan

Jika 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

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
8 yang samar ini

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_1

Hati-hati dengan tanda kutip di dalam tanda kutip

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_2

Anda harus beralih ke gaya kutipan yang berbeda (menggunakan tanda kutip ganda misalnya) atau menghindari tanda kutip tersebut

Mencampur simbol Anda

Kadang-kadang sintaks Anda mungkin terlihat benar tetapi Anda sebenarnya telah mengacaukan satu bit sintaks dengan sintaks umum lainnya

Itulah yang terjadi di sini

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_3

Kami mencoba membuat kamus dan kami tidak sengaja menggunakan

$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: invalid syntax
8 alih-alih
$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: invalid syntax
5 untuk memisahkan pasangan nilai kunci kami

Ini simbol kamus lain yang bercampur

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_4

Sepertinya kita mencoba mendefinisikan kamus, tetapi kita mulai dengan tanda kurung siku terbuka (

def colors():
    c = ['red',
        'blue',
    return c
7) alih-alih tanda kurung kurawal terbuka (
def colors():
    c = ['red',
        'blue',
    return c
8)

Kesalahan sintaks umum lainnya adalah periode yang hilang

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_5

Kami mencoba mengakses atribut

def colors():
    c = ['red',
        'blue',
    return c
_9 pada objek yang dikembalikan dari panggilan
$ python3.9 colors.py
  File "/home/trey/colors.py", line 4
    return c
    ^
SyntaxError: invalid syntax
0 itu, tetapi kami lupa meletakkan
$ python3.9 colors.py
  File "/home/trey/colors.py", line 4
    return c
    ^
SyntaxError: invalid syntax
1 sebelum
def colors():
    c = ['red',
        'blue',
    return c
9

Terkadang kesalahan sintaksis disebabkan oleh karakter yang ditukar

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_6

Dan beberapa kesalahan sintaks disebabkan oleh simbol tambahan yang tidak ingin Anda tulis

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_7

Kami menulis tambahan

$ python3.9 colors.py
  File "/home/trey/colors.py", line 4
    return c
    ^
SyntaxError: invalid syntax
_1 sebelum tanda kurung kami di atas

Kesalahan lekukan yang disamarkan

Terkadang

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
_6 sebenarnya merupakan kesalahan indentasi yang disamarkan

Misalnya kode ini memiliki klausa

$ python3.9 colors.py
  File "/home/trey/colors.py", line 4
    return c
    ^
SyntaxError: invalid syntax
_5 yang indentasinya terlalu jauh

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_8

Saat kami menjalankan kode, kami akan melihat

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
6

$ python3 square.py
  File "/home/trey/square.py", line 2
    return [
    ^
SyntaxError: invalid syntax
_9

Masalah lekukan sering kali menghasilkan

$ python3.9 colors.py
  File "/home/trey/colors.py", line 4
    return c
    ^
SyntaxError: invalid syntax
7 pengecualian, tetapi terkadang mereka akan bermanifestasi sebagai
def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
6 pengecualian sebagai gantinya

Menyematkan 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.

$ python3.9 colors.py
  File "/home/trey/colors.py", line 4
    return c
    ^
SyntaxError: invalid syntax
_9,
$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
00, dan
$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
01), dan operator (e. g.
$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
02,
$ python3 greet.py
  File "/home/trey/greet.py", line 10
    if name == "Trey"
                     ^
SyntaxError: expected ':'
8, dan
$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
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

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed
0

Tugas adalah pernyataan dalam Python (

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
05 adalah pernyataan).
>>> name = "Trey"
>>> if name = "Trey":
  File "", line 1
    if name = "Trey":
       ^^^^^^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
_8 Python juga merupakan pernyataan. Kami telah mencoba menyematkan satu pernyataan di dalam yang lain dan Python tidak memahami kami

Kami mungkin bermaksud baik ini

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed
1

Atau ini

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed
2

Inilah masalah yang sama dengan pernyataan

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
_07 (lihat menugaskan ke variabel global)

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed
3

Dan masalah yang sama dengan pernyataan

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
_08

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed
4

Jika 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 REPL

Beberapa kesalahan agak kurang membantu dalam Python

Ambil kesalahan

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
_8 ini

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed
5

Kita 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

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
10 sebagai gantinya

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed

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

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed
7

Ini adalah kode Python yang valid

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed
8

Tapi 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

$ python3.10 square.py
  File "/home/trey/square.py", line 1
    def square_all(numbers:
                  ^
SyntaxError: '(' was never closed
_9

Beberapa kesalahan disebabkan oleh kode yang terasa seperti seharusnya bekerja di Python REPL tetapi tidak. Misalnya menjalankan

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
_11 dari dalam Python REPL Anda tidak berfungsi

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
0

Perintah 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

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
12 atau
$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
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 REPL

Masalah salin-tempel dari REPL

Copy-paste dari Python REPL ke file

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
10 juga akan mengakibatkan kesalahan sintaks

Inilah kami menjalankan file yang memiliki

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
15 awalan sebelum setiap baris

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
_1

Ini bukan program Python yang valid

Tapi ini adalah program Python yang valid

Anda harus berhati-hati dengan baris kosong saat menyalin-tempel dari file

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
10 ke Python REPL dan Anda harus berhati-hati tentang
$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
15 dan
$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
18 prefiks dan output perintah saat menyalin-menempel dari REPL ke file
$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
10

Nomor 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

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax

Dan inilah kesalahan yang sama di Python 3. 10

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
_3

Python 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

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
20, baris 3 (
$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
21) adalah tebakan yang lebih baik dalam kasus ini, karena di situlah koma diperlukan

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
_4

Saat menguraikan traceback, perlu diingat bahwa nomor baris hanyalah tebakan terbaik Python tentang di mana kesalahan terjadi

Jika kode Anda sering menghasilkan

def square_all(numbers:
    return [
        n**2
        for n in numbers
    ]
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 tulis

Tetapi 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

$ python3.9 greet.py
  File "/home/trey/greet.py", line 4
    name
    ^
SyntaxError: invalid syntax
10 Anda

Setelah 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