Koma untuk loop python

Python dikenal dengan sintaksisnya yang sederhana. Namun, ketika Anda mempelajari Python untuk pertama kalinya atau ketika Anda datang ke Python dengan latar belakang yang kuat dalam bahasa pemrograman lain, Anda mungkin mengalami beberapa hal yang tidak diperbolehkan oleh Python. Jika Anda pernah menerima

>>> len('hello') == 5
True
_1 saat mencoba menjalankan kode Python Anda, maka panduan ini dapat membantu Anda. Sepanjang tutorial ini, Anda akan melihat contoh umum sintaks yang tidak valid di Python dan mempelajari cara mengatasi masalah tersebut

Di akhir tutorial ini, Anda akan bisa

  • Identifikasi sintaks yang tidak valid di Python
  • Pahami
    >>> len('hello') == 5
    True
    
    1 traceback
  • Atasi sintaks yang tidak valid atau cegah sama sekali

Bonus Gratis. 5 Pemikiran Tentang Python Mastery, kursus gratis untuk pengembang Python yang menunjukkan kepada Anda peta jalan dan pola pikir yang Anda perlukan untuk meningkatkan keterampilan Python Anda ke tingkat berikutnya

Sintaks tidak valid dalam Python

Saat Anda menjalankan kode Python, pertama-tama interpreter akan menguraikannya untuk mengubahnya menjadi kode byte Python, yang kemudian akan dieksekusi. Penerjemah akan menemukan sintaks yang tidak valid di Python selama tahap pertama eksekusi program ini, juga dikenal sebagai tahap parsing. Jika penerjemah tidak berhasil mengurai kode Python Anda, ini berarti Anda menggunakan sintaks yang tidak valid di suatu tempat dalam kode Anda. Penerjemah akan berusaha menunjukkan kepada Anda di mana kesalahan itu terjadi

Saat Anda mempelajari Python untuk pertama kalinya, mendapatkan

>>> len('hello') == 5
True
1 bisa membuat frustrasi. Python akan berusaha membantu Anda menentukan di mana sintaks yang tidak valid berada dalam kode Anda, tetapi traceback yang disediakannya bisa sedikit membingungkan. Terkadang, kode yang ditunjuknya baik-baik saja

Catatan. Jika kode Anda secara sintaksis benar, maka Anda mungkin mendapatkan pengecualian lain yang bukan

>>> len('hello') == 5
True
1. Untuk mempelajari lebih lanjut tentang pengecualian Python lainnya dan cara menanganinya, lihat Pengecualian Python. Sebuah Pengantar

Anda tidak dapat menangani sintaks yang tidak valid di Python seperti pengecualian lainnya. Bahkan jika Anda mencoba membungkus

>>> len('hello') == 5
True
_5 dan
>>> len('hello') == 5
True
6 blok di sekitar kode dengan sintaks yang tidak valid, Anda masih akan melihat juru bahasa menaikkan
>>> len('hello') == 5
True
1

Hilangkan iklan

>>> len('hello') == 5 True 1 Pengecualian dan Traceback

Ketika penerjemah menemukan sintaks yang tidak valid dalam kode Python, itu akan memunculkan pengecualian

>>> len('hello') == 5
True
1 dan memberikan traceback dengan beberapa informasi bermanfaat untuk membantu Anda men-debug kesalahan. Berikut beberapa kode yang berisi sintaks tidak valid di Python

 1# theofficefacts.py
 2ages = {
 3    'pam': 24,
 4    'jim': 24
 5    'michael': 43
 6}
 7print(f'Michael is {ages["michael"]} years old.')
_

Anda dapat melihat sintaks yang tidak valid di kamus literal pada baris 4. Entri kedua,

>>> fro i in range(10):
  File "<stdin>", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
_0, tidak ada koma. Jika Anda mencoba menjalankan kode ini apa adanya, Anda akan mendapatkan traceback berikut

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax

Perhatikan bahwa pesan traceback menemukan kesalahan di baris 5, bukan baris 4. Penerjemah Python mencoba menunjukkan di mana sintaks yang tidak valid berada. Namun, itu hanya dapat benar-benar menunjukkan di mana ia pertama kali melihat masalah. Saat Anda mendapatkan

>>> len('hello') == 5
True
1 traceback dan kode yang ditunjuk oleh traceback terlihat baik-baik saja, maka Anda akan ingin mulai bergerak mundur melalui kode sampai Anda dapat menentukan apa yang salah

Dalam contoh di atas, tidak ada masalah dengan menghilangkan koma, tergantung apa yang muncul setelahnya. Misalnya, tidak ada masalah dengan koma yang hilang setelah

>>> fro i in range(10):
  File "<stdin>", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
2 pada baris 5. Namun begitu penerjemah menemukan sesuatu yang tidak masuk akal, ia hanya dapat mengarahkan Anda ke hal pertama yang ditemukannya yang tidak dapat dipahaminya.

Catatan. Tutorial ini mengasumsikan bahwa Anda mengetahui dasar-dasar traceback Python. Untuk mempelajari lebih lanjut tentang traceback Python dan cara membacanya, lihat Memahami Traceback Python dan Mendapatkan Hasil Maksimal dari Traceback Python

Ada beberapa elemen traceback

>>> len('hello') == 5
True
1 yang dapat membantu Anda menentukan letak sintaks yang tidak valid dalam kode Anda

  • Nama file tempat ditemukannya sintaks yang tidak valid
  • Nomor baris dan baris kode yang direproduksi tempat masalah terjadi
  • Tanda sisipan (
    >>> fro i in range(10):
      File "<stdin>", line 1
        fro i in range(10):
            ^
    SyntaxError: invalid syntax
    
    _4) pada baris di bawah kode yang direproduksi, yang menunjukkan titik di kode yang bermasalah
  • Pesan kesalahan yang muncul setelah jenis pengecualian
    >>> len('hello') == 5
    True
    
    1, yang dapat memberikan informasi untuk membantu Anda menentukan masalahnya

Pada contoh di atas, nama file yang diberikan adalah

>>> fro i in range(10):
  File "<stdin>", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
6, nomor barisnya adalah 5, dan tanda sisipan menunjuk ke kutipan penutup kunci kamus
>>> fro i in range(10):
  File "<stdin>", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
7. Traceback
>>> len('hello') == 5
True
1 mungkin tidak menunjuk ke masalah sebenarnya, tetapi akan menunjuk ke tempat pertama di mana penafsir tidak dapat memahami sintaks

Ada dua pengecualian lain yang mungkin Anda lihat dinaikkan oleh Python. Ini setara dengan

>>> len('hello') == 5
True
_1 tetapi memiliki nama yang berbeda

  1. >>> for i range(10):
      File "<stdin>", line 1
        for i range(10):
                  ^
    SyntaxError: invalid syntax
    
    0
  2. >>> for i range(10):
      File "<stdin>", line 1
        for i range(10):
                  ^
    SyntaxError: invalid syntax
    
    1

Pengecualian ini sama-sama mewarisi dari kelas

>>> len('hello') == 5
True
_1, tetapi merupakan kasus khusus yang berkaitan dengan indentasi.
>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
_0 dimunculkan saat level indentasi kode Anda tidak cocok. A
>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
_1 dimunculkan saat kode Anda menggunakan tab dan spasi dalam file yang sama. Anda akan melihat lebih dekat pengecualian ini di bagian selanjutnya

Masalah Sintaks Umum

Saat Anda menemukan

>>> len('hello') == 5
True
_1 untuk pertama kalinya, akan sangat membantu untuk mengetahui mengapa ada masalah dan apa yang mungkin Anda lakukan untuk memperbaiki sintaks yang tidak valid dalam kode Python Anda. Pada bagian di bawah, Anda akan melihat beberapa alasan yang lebih umum bahwa
>>> len('hello') == 5
True
1 mungkin dimunculkan dan bagaimana Anda dapat memperbaikinya

Penyalahgunaan Operator Penugasan (>>> for i range(10): File "<stdin>", line 1 for i range(10): ^ SyntaxError: invalid syntax 7)

Ada beberapa kasus di Python di mana Anda tidak dapat membuat tugas ke objek. Beberapa contoh menugaskan ke literal dan pemanggilan fungsi. Di blok kode di bawah ini, Anda dapat melihat beberapa contoh yang mencoba melakukan ini dan menghasilkan

>>> len('hello') == 5
True
1 traceback

>>>

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
_

Contoh pertama mencoba menetapkan nilai

>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
9 ke panggilan
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
0. Pesan
>>> len('hello') == 5
True
1 sangat membantu dalam kasus ini. Ini memberi tahu Anda bahwa Anda tidak dapat menetapkan nilai ke panggilan fungsi

Contoh kedua dan ketiga mencoba menetapkan string dan bilangan bulat ke literal. Aturan yang sama berlaku untuk nilai literal lainnya. Sekali lagi, pesan traceback menunjukkan bahwa masalah terjadi saat Anda mencoba menetapkan nilai ke literal

Catatan. Contoh di atas tidak memiliki baris kode berulang dan tanda sisipan (

>>> fro i in range(10):
  File "<stdin>", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
4) yang menunjuk ke masalah di traceback. Pengecualian dan traceback yang Anda lihat akan berbeda saat Anda berada di REPL vs mencoba mengeksekusi kode ini dari file. Jika kode ini ada di dalam file, maka Anda akan mendapatkan baris kode berulang dan tanda sisipan yang menunjuk ke masalah, seperti yang Anda lihat di kasus lain di sepanjang tutorial ini

Kemungkinan maksud Anda bukan untuk menetapkan nilai ke literal atau panggilan fungsi. Misalnya, ini dapat terjadi jika Anda tidak sengaja menghilangkan tanda sama dengan tambahan (

>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
7), yang akan mengubah penetapan menjadi perbandingan. Perbandingan, seperti yang Anda lihat di bawah, akan valid

>>> ________0______

Sebagian besar waktu, ketika Python memberi tahu Anda bahwa Anda sedang membuat tugas untuk sesuatu yang tidak dapat ditugaskan, pertama-tama Anda mungkin ingin memeriksa untuk memastikan bahwa pernyataan tersebut seharusnya bukan ekspresi Boolean. Anda juga dapat mengalami masalah ini saat mencoba menetapkan nilai ke kata kunci Python, yang akan Anda bahas di bagian selanjutnya

Hilangkan iklan

Salah mengeja, Hilang, atau Menyalahgunakan Kata Kunci Python

Kata kunci Python adalah sekumpulan kata yang dilindungi yang memiliki arti khusus di Python. Ini adalah kata-kata yang tidak dapat Anda gunakan sebagai pengidentifikasi, variabel, atau nama fungsi dalam kode Anda. Mereka adalah bagian dari bahasa dan hanya dapat digunakan dalam konteks yang memungkinkan Python

Ada tiga cara umum yang membuat Anda salah menggunakan kata kunci

  1. Salah mengeja kata kunci
  2. Kata kunci hilang
  3. Menyalahgunakan kata kunci

Jika Anda salah mengeja kata kunci dalam kode Python Anda, maka Anda akan mendapatkan

>>> len('hello') == 5
True
1. Misalnya, inilah yang terjadi jika Anda salah mengeja kata kunci
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
5

>>>

>>> fro i in range(10):
  File "<stdin>", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
_

Pesannya berbunyi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
_6, tapi itu tidak terlalu membantu. Traceback menunjuk ke tempat pertama di mana Python dapat mendeteksi bahwa ada sesuatu yang salah. Untuk memperbaiki kesalahan semacam ini, pastikan semua kata kunci Python Anda dieja dengan benar

Masalah umum lainnya dengan kata kunci adalah ketika Anda melewatkannya sama sekali

>>>

>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
_

Sekali lagi, pesan pengecualian tidak terlalu membantu, tetapi traceback berusaha mengarahkan Anda ke arah yang benar. Jika Anda mundur dari tanda sisipan, maka Anda dapat melihat bahwa kata kunci

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
7 hilang dari sintaks loop
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
5

Anda juga dapat menyalahgunakan kata kunci Python yang dilindungi. Ingat, kata kunci hanya boleh digunakan dalam situasi tertentu. Jika Anda salah menggunakannya, maka Anda akan memiliki sintaks yang tidak valid dalam kode Python Anda. Contoh umum dari hal ini adalah penggunaan di luar loop. Hal ini dapat dengan mudah terjadi selama pengembangan saat Anda mengimplementasikan berbagai hal dan kebetulan memindahkan logika di luar lingkaran

>>>

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
_

Di sini, Python melakukan pekerjaan yang bagus untuk memberi tahu Anda dengan tepat apa yang salah. Pesan

>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
1 dan
>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
2 membantu Anda mencari tahu apa yang harus dilakukan. Jika kode ini ada dalam sebuah file, maka Python juga akan memiliki tanda sisipan yang menunjuk langsung ke kata kunci yang disalahgunakan

Contoh lain adalah jika Anda mencoba menetapkan kata kunci Python ke variabel atau menggunakan kata kunci untuk mendefinisikan suatu fungsi

>>>

>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
_

Saat Anda mencoba menetapkan nilai ke

>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
_3, atau saat Anda mencoba mendefinisikan fungsi baru bernama
>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
3, Anda akan mendapatkan
>>> len('hello') == 5
True
1 dan melihat pesan
>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
6 lagi

Mungkin sedikit lebih sulit untuk menyelesaikan jenis sintaks yang tidak valid ini dalam kode Python karena kode tersebut terlihat baik-baik saja dari luar. Jika kode Anda terlihat bagus, tetapi Anda masih mendapatkan

>>> len('hello') == 5
True
1, maka Anda dapat mempertimbangkan untuk memeriksa nama variabel atau nama fungsi yang ingin Anda gunakan terhadap daftar kata kunci untuk versi Python yang Anda gunakan

Daftar kata kunci yang dilindungi telah berubah dengan setiap versi baru Python. Misalnya, dalam Python 3. 6 Anda bisa menggunakan

>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
_8 sebagai nama variabel atau nama fungsi, tetapi pada Python 3. 7, kata itu telah ditambahkan ke daftar kata kunci. Sekarang, jika Anda mencoba menggunakan
>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
_8 sebagai nama variabel atau fungsi, ini akan menyebabkan
>>> len('hello') == 5
True
1 jika kode Anda untuk Python 3. 7 atau lebih baru

Contoh lain dari ini adalah

import keyword
print(keyword.kwlist)
_1, yang berbeda dalam Python 2 vs Python 3

Versi

import keyword
print(keyword.kwlist)
_1 JenisMembutuhkan Nilaikata kuncitanpa fungsi bawaanya

import keyword
print(keyword.kwlist)
1 adalah kata kunci dalam Python 2, jadi Anda tidak dapat memberikan nilai padanya. Namun, dalam Python 3, ini adalah fungsi bawaan yang dapat diberi nilai

Anda dapat menjalankan kode berikut untuk melihat daftar kata kunci dalam versi Python apa pun yang Anda jalankan

import keyword
print(keyword.kwlist)

import keyword
print(keyword.kwlist)
4 juga menyediakan
import keyword
print(keyword.kwlist)
5 yang berguna. Jika Anda hanya perlu cara cepat untuk memeriksa variabel
>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
3, maka Anda dapat menggunakan one-liner berikut

>>>

>>> import keyword; keyword.iskeyword('pass')
True
_

Kode ini akan memberi tahu Anda dengan cepat apakah pengidentifikasi yang Anda coba gunakan adalah kata kunci atau bukan

Hilangkan iklan

Tanda Kurung, Tanda Kurung, dan Tanda Kutip Tidak Ada

Seringkali, penyebab sintaks yang tidak valid dalam kode Python adalah tanda kurung, tanda kurung, atau tanda kutip yang terlewat atau tidak cocok. Ini bisa sulit dikenali dalam garis kurung bersarang yang sangat panjang atau blok multi-baris yang lebih panjang. Anda dapat melihat ketidaksesuaian atau tanda kutip yang hilang dengan bantuan tracebacks Python

>>>

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
0

Di sini, traceback menunjuk ke kode yang tidak valid di mana ada

import keyword
print(keyword.kwlist)
7 setelah kutipan tunggal penutup. Untuk memperbaikinya, Anda dapat membuat salah satu dari dua perubahan

  1. Melarikan diri dari kutipan tunggal dengan garis miring terbalik (
    import keyword
    print(keyword.kwlist)
    
    8)
  2. Kelilingi seluruh string dengan tanda kutip ganda sebagai gantinya (
    import keyword
    print(keyword.kwlist)
    
    9)

Kesalahan umum lainnya adalah lupa menutup string. Dengan string dengan kutip ganda dan kutip tunggal, situasi dan traceback-nya sama

>>>

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
1

Kali ini, tanda sisipan di traceback menunjuk langsung ke kode masalah. Pesan

>>> len('hello') == 5
True
1,
>>> import keyword; keyword.iskeyword('pass')
True
1, sedikit lebih spesifik dan membantu dalam menentukan masalah. Ini berarti bahwa juru bahasa Python sampai ke akhir baris (EOL) sebelum string terbuka ditutup. Untuk memperbaikinya, tutup string dengan kutipan yang cocok dengan yang Anda gunakan untuk memulainya. Dalam hal ini, itu akan menjadi kutipan ganda (
>>> import keyword; keyword.iskeyword('pass')
True
2)

Kutipan yang hilang dari pernyataan di dalam f-string juga dapat menyebabkan sintaks yang tidak valid di Python

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_2

Di sini, referensi ke kamus

>>> import keyword; keyword.iskeyword('pass')
True
_3 di dalam f-string yang dicetak tidak memiliki tanda kutip ganda penutup dari referensi kunci. Traceback yang dihasilkan adalah sebagai berikut

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_3

Python mengidentifikasi masalahnya dan memberi tahu Anda bahwa itu ada di dalam f-string. Pesan

>>> import keyword; keyword.iskeyword('pass')
True
_4 juga menunjukkan apa masalahnya. Tanda sisipan dalam hal ini hanya menunjuk ke awal f-string

Ini mungkin tidak membantu seperti saat tanda sisipan menunjuk ke area masalah f-string, tetapi ini mempersempit tempat yang perlu Anda lihat. Ada string yang tidak terputus di suatu tempat di dalam f-string itu. Anda hanya perlu mencari tahu di mana. Untuk memperbaiki masalah ini, pastikan semua tanda kutip dan tanda kurung f-string internal ada

Situasinya sebagian besar sama untuk tanda kurung dan tanda kurung yang hilang. Jika Anda meninggalkan tanda kurung siku penutup dari daftar, misalnya, maka Python akan menemukannya dan menunjukkannya. Namun, ada beberapa variasi dari ini. Yang pertama adalah meninggalkan braket penutup dari daftar

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_4

Saat Anda menjalankan kode ini, Anda akan diberi tahu bahwa ada masalah dengan panggilan ke

>>> import keyword; keyword.iskeyword('pass')
True
5

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_5

Apa yang terjadi di sini adalah bahwa Python mengira daftar tersebut berisi tiga elemen.

>>> import keyword; keyword.iskeyword('pass')
True
6,
>>> import keyword; keyword.iskeyword('pass')
True
7, dan
>>> import keyword; keyword.iskeyword('pass')
True
8. Python menggunakan spasi putih untuk mengelompokkan hal-hal secara logis, dan karena tidak ada koma atau tanda kurung yang memisahkan
>>> import keyword; keyword.iskeyword('pass')
True
9 dari
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
00, Python menyatukannya sebagai elemen ketiga dari daftar

Variasi lainnya adalah dengan menambahkan tanda koma setelah elemen terakhir dalam daftar sambil tetap meninggalkan tanda kurung siku penutup

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_6

Sekarang Anda mendapatkan traceback yang berbeda

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_7

Pada contoh sebelumnya,

>>> import keyword; keyword.iskeyword('pass')
True
_9 dan
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
00 disatukan sebagai satu elemen, tetapi di sini Anda melihat koma yang memisahkan keduanya. Sekarang, panggilan ke
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_00 ditambahkan sebagai elemen keempat dari daftar, dan Python mencapai akhir file tanpa tanda kurung tutup. Traceback memberi tahu Anda bahwa Python sampai ke akhir file (EOF), tetapi mengharapkan sesuatu yang lain

Dalam contoh ini, Python mengharapkan braket penutup (

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
04), tetapi baris dan tanda sisipan yang diulang tidak terlalu membantu. Tanda kurung dan tanda kurung yang hilang sulit untuk diidentifikasi oleh Python. Terkadang satu-satunya hal yang dapat Anda lakukan adalah mulai dari tanda sisipan dan mundur hingga Anda dapat mengidentifikasi apa yang hilang atau salah

Hilangkan iklan

Sintaks Kamus Salah

Anda melihat bahwa Anda bisa mendapatkan

>>> len('hello') == 5
True
_1 jika Anda menghilangkan koma dari elemen kamus. Bentuk lain dari sintaks yang tidak valid dengan kamus Python adalah penggunaan tanda sama dengan (
>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
7) untuk memisahkan kunci dan nilai, bukan titik dua

>>> ________11______8

Sekali lagi, pesan kesalahan ini sangat tidak membantu. Namun, baris dan tanda sisipan yang berulang sangat membantu. Mereka menunjuk langsung ke karakter bermasalah

Jenis masalah ini biasa terjadi jika Anda mengacaukan sintaks Python dengan bahasa pemrograman lain. Anda juga akan melihat ini jika Anda mengacaukan tindakan mendefinisikan kamus dengan panggilan

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
07. Untuk mengatasinya, Anda dapat mengganti tanda sama dengan dengan titik dua. Anda juga dapat beralih menggunakan
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_07

>>>

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
9

Anda dapat menggunakan

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_07 untuk mendefinisikan kamus jika sintaks itu lebih membantu

Menggunakan Lekukan yang Salah

Ada dua sub-kelas

>>> len('hello') == 5
True
1 yang menangani masalah lekukan secara khusus

  1. >>> for i range(10):
      File "<stdin>", line 1
        for i range(10):
                  ^
    SyntaxError: invalid syntax
    
    0
  2. >>> for i range(10):
      File "<stdin>", line 1
        for i range(10):
                  ^
    SyntaxError: invalid syntax
    
    1

Sementara bahasa pemrograman lain menggunakan kurung kurawal untuk menunjukkan blok kode, Python menggunakan spasi. Itu berarti bahwa Python mengharapkan spasi putih dalam kode Anda berperilaku dapat diprediksi. Ini akan memunculkan

>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
_0 jika ada baris dalam blok kode yang memiliki jumlah spasi yang salah

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
0

Ini mungkin sulit dilihat, tetapi baris 5 hanya menjorok 2 spasi. Itu harus sejalan dengan pernyataan loop

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
5, yang berjarak 4 spasi. Untungnya, Python dapat menemukan ini dengan mudah dan akan segera memberi tahu Anda apa masalahnya

Ada juga sedikit ambiguitas di sini. Apakah

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
15 baris dimaksudkan setelah
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
5 loop atau di dalam
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
5 loop blok?

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
1

Meskipun traceback sangat mirip dengan traceback

>>> len('hello') == 5
True
1, sebenarnya ini adalah
>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
0. Pesan kesalahan juga sangat membantu. Ini memberi tahu Anda bahwa tingkat lekukan garis tidak cocok dengan tingkat lekukan lainnya. Dengan kata lain,
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
15 memiliki indentasi 2 spasi, tetapi Python tidak dapat menemukan baris kode lain yang cocok dengan level indentasi ini. Anda dapat memperbaikinya dengan cepat dengan memastikan kode sesuai dengan tingkat lekukan yang diharapkan

Jenis lain dari

>>> len('hello') == 5
True
1 adalah
>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
1, yang akan Anda lihat setiap kali ada baris yang berisi tab atau spasi untuk indentasinya, sedangkan file lainnya berisi yang lain. Ini mungkin disembunyikan sampai Python menunjukkannya kepada Anda

Jika ukuran tab Anda memiliki lebar yang sama dengan jumlah spasi di setiap tingkat lekukan, maka mungkin terlihat semua garis berada pada tingkat yang sama. Namun, jika satu baris diindentasi menggunakan spasi dan baris lainnya diindentasi dengan tab, maka Python akan menunjukkan ini sebagai masalah.

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
2

Di sini, baris 5 diindentasi dengan tab, bukan 4 spasi. Blok kode ini mungkin terlihat baik-baik saja bagi Anda, atau mungkin terlihat sangat salah, tergantung pada pengaturan sistem Anda

Namun, Python akan segera menyadari masalahnya. Tetapi sebelum Anda menjalankan kode untuk melihat apa yang menurut Python Anda salah, mungkin berguna bagi Anda untuk melihat contoh seperti apa kode itu di bawah pengaturan lebar tab yang berbeda

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
3

Perhatikan perbedaan tampilan antara ketiga contoh di atas. Sebagian besar kode menggunakan 4 spasi untuk setiap level lekukan, tetapi baris 5 menggunakan satu tab di ketiga contoh. Lebar tab berubah, berdasarkan pengaturan lebar tab

  • Jika lebar tab adalah 4, maka pernyataan
    import keyword
    print(keyword.kwlist)
    
    1 akan terlihat seperti berada di luar loop
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ..     print('jim found')
    ..     break
    ...
      File "<stdin>", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ..     print('jim found')
    ..     continue
    ...
      File "<stdin>", line 3
    SyntaxError: 'continue' not properly in loop
    
    5. Konsol akan mencetak
    $ python theofficefacts.py
    File "theofficefacts.py", line 5
        'michael': 43
                ^
    SyntaxError: invalid syntax
    
    _25 di akhir loop
  • Jika lebar tab adalah 8, yang merupakan standar untuk banyak sistem, maka pernyataan
    import keyword
    print(keyword.kwlist)
    
    1 akan terlihat seperti berada di dalam loop
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ..     print('jim found')
    ..     break
    ...
      File "<stdin>", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ..     print('jim found')
    ..     continue
    ...
      File "<stdin>", line 3
    SyntaxError: 'continue' not properly in loop
    
    5. Konsol akan mencetak
    $ python theofficefacts.py
    File "theofficefacts.py", line 5
        'michael': 43
                ^
    SyntaxError: invalid syntax
    
    _25 setelah setiap nomor
  • Jika lebar tab adalah 3, maka pernyataan
    import keyword
    print(keyword.kwlist)
    
    1 terlihat tidak pada tempatnya. Dalam hal ini, baris 5 tidak cocok dengan level lekukan mana pun

Saat Anda menjalankan kode, Anda akan mendapatkan error dan traceback berikut

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
4

Perhatikan

>>> for i range(10):
  File "<stdin>", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
1 alih-alih
>>> len('hello') == 5
True
1 yang biasa. Python menunjukkan garis masalahnya dan memberi Anda pesan kesalahan yang bermanfaat. Ini memberi tahu Anda dengan jelas bahwa ada campuran tab dan spasi yang digunakan untuk lekukan di file yang sama

Solusi untuk ini adalah membuat semua baris dalam file kode Python yang sama menggunakan tab atau spasi, tetapi tidak keduanya. Untuk blok kode di atas, perbaikannya adalah menghapus tab dan menggantinya dengan 4 spasi, yang akan mencetak

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
25 setelah
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
..     print('jim found')
..     break
...
  File "<stdin>", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
..     print('jim found')
..     continue
...
  File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
5 loop selesai

Hilangkan iklan

Mendefinisikan dan Memanggil Fungsi

Anda mungkin mengalami sintaks yang tidak valid di Python saat Anda mendefinisikan atau memanggil fungsi. Misalnya, Anda akan melihat

>>> len('hello') == 5
True
1 jika Anda menggunakan titik koma dan bukan titik dua di akhir definisi fungsi

>>>

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
5

Traceback di sini sangat membantu, dengan tanda sisipan menunjuk langsung ke karakter masalah. Anda dapat menghapus sintaks yang tidak valid ini dengan Python dengan mengganti titik koma dengan titik dua

Selain itu, argumen kata kunci dalam definisi fungsi dan pemanggilan fungsi harus dalam urutan yang benar. Argumen kata kunci selalu muncul setelah argumen posisi. Kegagalan untuk menggunakan pemesanan ini akan menyebabkan

>>> len('hello') == 5
True
1

>>>

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
6

Di sini, sekali lagi, pesan kesalahan sangat membantu dalam memberi tahu Anda dengan tepat apa yang salah dengan baris tersebut

Mengubah Versi Python

Kadang-kadang, kode yang berfungsi dengan sangat baik dalam satu versi Python rusak di versi yang lebih baru. Ini karena perubahan resmi dalam sintaks bahasa. Contoh paling terkenal dari hal ini adalah pernyataan

import keyword
print(keyword.kwlist)
1, yang berubah dari kata kunci di Python 2 menjadi fungsi bawaan di Python 3

>>>

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
7

Ini adalah salah satu contoh di mana pesan kesalahan yang diberikan dengan

>>> len('hello') == 5
True
1 bersinar. Tidak hanya memberi tahu Anda bahwa Anda kehilangan tanda kurung dalam panggilan
import keyword
print(keyword.kwlist)
1, tetapi juga memberikan kode yang benar untuk membantu Anda memperbaiki pernyataan tersebut

Masalah lain yang mungkin Anda temui adalah saat Anda membaca atau mempelajari tentang sintaks yang merupakan sintaks yang valid di versi Python yang lebih baru, tetapi tidak valid di versi yang Anda tulis. Contohnya adalah sintaks f-string, yang tidak ada di versi Python sebelum 3. 6

>>> ________30______8

Dalam versi Python sebelum 3. 6, juru bahasa tidak tahu apa-apa tentang sintaks f-string dan hanya akan memberikan pesan umum

>>> pass = True
  File "<stdin>", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "<stdin>", line 1
    def pass():
           ^
SyntaxError: invalid syntax
6. Masalahnya, dalam hal ini, adalah bahwa kode tersebut terlihat baik-baik saja, tetapi dijalankan dengan versi Python yang lebih lama. Jika ragu, periksa kembali versi Python mana yang Anda jalankan

Sintaks Python terus berkembang, dan ada beberapa fitur baru yang keren yang diperkenalkan di Python 3. 8

Jika Anda ingin mencoba beberapa fitur baru ini, Anda perlu memastikan bahwa Anda bekerja dengan Python 3. 8 lingkungan. Jika tidak, Anda akan mendapatkan

>>> len('hello') == 5
True
1

Piton 3. 8 juga menyediakan

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_41 baru. Anda akan melihat peringatan ini dalam situasi di mana sintaks valid tetapi masih terlihat mencurigakan. Contohnya adalah jika Anda kehilangan koma di antara dua tupel dalam daftar. Ini akan menjadi sintaks yang valid dalam versi Python sebelum 3. 8, tetapi kode akan memunculkan
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
42 karena tuple tidak dapat dipanggil

>>>

>>> len('hello') = 5
  File "<stdin>", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "<stdin>", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "<stdin>", line 1
SyntaxError: can't assign to literal
9

Ini

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_42 berarti Anda tidak dapat memanggil tuple seperti fungsi, yang menurut juru bahasa Python sedang Anda lakukan

Dalam Python 3. 8, kode ini masih memunculkan

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_42, tetapi sekarang Anda juga akan melihat
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
41 yang menunjukkan bagaimana Anda dapat memperbaiki masalah

>>>

>>> len('hello') == 5
True
0

Pesan bermanfaat yang menyertai

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
_41 baru bahkan memberikan petunjuk (
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
47) untuk mengarahkan Anda ke arah yang benar

Hilangkan iklan

Kesimpulan

Dalam tutorial ini, Anda telah melihat informasi apa yang diberikan oleh

>>> len('hello') == 5
True
1 traceback kepada Anda. Anda juga telah melihat banyak contoh umum sintaks yang tidak valid di Python dan apa solusinya untuk masalah tersebut. Ini tidak hanya akan mempercepat alur kerja Anda, tetapi juga akan membuat Anda menjadi peninjau kode yang lebih membantu

Saat Anda menulis kode, coba gunakan IDE yang memahami sintaks Python dan memberikan umpan balik. Jika Anda memasukkan banyak contoh kode Python yang tidak valid dari tutorial ini ke dalam IDE yang bagus, maka mereka harus menyorot baris masalah bahkan sebelum Anda mengeksekusi kode Anda

Mendapatkan

>>> len('hello') == 5
True
_1 saat Anda belajar Python bisa membuat frustasi, tetapi sekarang Anda tahu cara memahami pesan traceback dan bentuk sintaks tidak valid apa di Python yang mungkin Anda hadapi. Lain kali Anda mendapatkan
>>> len('hello') == 5
True
_1, Anda akan lebih siap untuk memperbaiki masalah dengan cepat

Tandai sebagai Selesai

Tonton Sekarang Tutorial ini memiliki kursus video terkait yang dibuat oleh tim Real Python. Tonton bersama dengan tutorial tertulis untuk memperdalam pemahaman Anda. Identifikasi Sintaks Python yang Tidak Valid

🐍 Trik Python 💌

Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python

Koma untuk loop python

Kirimi Saya Trik Python »

Tentang Chad Hansen

Koma untuk loop python
Koma untuk loop python

Chad adalah seorang Pythonista yang rajin dan melakukan pengembangan web dengan Django secara penuh waktu. Chad tinggal di Utah bersama istri dan enam anaknya

» Lebih lanjut tentang Chad


Setiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah

Koma untuk loop python

Aldren

Koma untuk loop python

Geir Arne

Koma untuk loop python

Jaya

Koma untuk loop python

Joanna

Koma untuk loop python

Mike

Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista

Tingkatkan Keterampilan Python Anda »

Guru Keterampilan Python Dunia Nyata
Dengan Akses Tak Terbatas ke Real Python

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista

Tingkatkan Keterampilan Python Anda »

Bagaimana menurut anda?

Nilai artikel ini

Tweet Bagikan Bagikan Email

Apa takeaway # 1 Anda atau hal favorit yang Anda pelajari?

Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami

Apa arti koma di for loop di Python?

Adapun koma, karena fungsi (tampaknya) mengembalikan dua-tupel, daftar nama yang dipisahkan koma adalah cara mudah untuk memberi nama elemen individu dari tuple tanpa harus membukanya sendiri.

Bisakah kita menggunakan koma untuk loop?

Anda dapat menggunakan operator koma saat ingin menyertakan beberapa ekspresi di lokasi yang memerlukan satu ekspresi. Penggunaan yang paling umum dari operator ini adalah untuk menyediakan beberapa updater dalam loop for .

Bagaimana Anda menambahkan koma dengan Python?

Bagaimana Cara Menambahkan Koma ke String dengan Python? .
Menggunakan fungsi join()
Menggunakan for loop
Menggunakan fungsi replace()
Menggunakan fungsi format()
Menggunakan str. format() fungsi
Menggunakan f-string
Menggunakan modul lokal

Bagaimana Anda koma

Fungsi join() (join() adalah fungsi string dalam Python yang digunakan untuk menggabungkan elemen-elemen dari suatu urutan yang dipisahkan . Fungsi ini menghubungkan elemen urutan untuk membentuk string) dan kemudian mengubah hasilnya menjadi string yang dipisahkan dengan koma.