Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

SyntaxError: Invalid Syntax ใน Python - สาเหตุและวิธีแก้ไข

ไวยากรณ์ (Syntax) คือกฎที่กำหนดว่าภาษาโปรแกรมมิ่งควรเขียนอย่างไร แต่ละภาษามีชุดกฎไวยากรณ์ของตัวเองที่แตกต่างจากภาษาอื่น เราสามารถเปรียบเทียบได้เหมือนไวยากรณ์หรือเครื่องหมายวรรคตอนในภาษาพูด เครื่องหมายคำถามในภาษาอังกฤษ (?) แตกต่างจากเครื่องหมายคำถามในภาษากรีก (;)

คุณสามารถสรุปได้ว่าเมื่อคุณได้รับข้อผิดพลาดด้านไวยากรณ์ (syntax error) หมายความว่าคุณกำลังเขียนภาษาโปรแกรมมิ่งผิดพลาด คุณอาจพลาดลืมใส่หรือใช้ไวยากรณ์จากภาษาอื่น ซึ่งเป็นสิ่งที่มักเกิดขึ้นเมื่อนักพัฒนาขยายเทคโนโลยีสแต็ก (tech stack) ของพวกเขา

ในบทความนี้ เราจะเจาะลึกเกี่ยวกับ SyntaxError ที่พบบ่อยใน Python พร้อมตัวอย่าง และแสดงวิธีแก้ไขพวกเขา

SyntaxError ที่พบบ่อยและวิธีแก้ไข

ดิกชันนารี (Dictionaries)

ลองหาว่าทำไมข้อผิดพลาดด้านไวยากรณ์ถึงถูกโยนออกมาในโค้ดด้านล่าง:

student_gpas = { 'Mary': 3.0, 'Tim': 2.5 'John': 4.0 }
print(f'Mary has a {student_gpas["Mary"]} GPA.') # returns SyntaxError: invalid syntax

ถ้าคุณตอบว่า "ขาดเครื่องหมายจุลภาคหลังคู่คีย์-ค่าของ 2.5" คุณตอบถูกต้อง ดิกชันนารี เหมือนออบเจ็กต์ใน JavaScript ต้องการเครื่องหมายจุลภาคหลังคู่คีย์-ค่าแต่ละคู่ ยกเว้นคู่คีย์-ค่าสุดท้าย

วิธีแก้ไขข้อผิดพลาดข้างต้นคือ:

student_gpas = { 'Mary': 3.0, 'Tim': 2.5, 'John': 4.0 }
print(f'Mary has a {student_gpas["Mary"]} GPA.') # returns Mary has a 3.0 GPA.

เครื่องหมายอ้างอิง (Quotes)

ลองหาว่าทำไมข้อผิดพลาดด้านไวยากรณ์ในโค้ดด้านล่างถึงถูกโยนออกมา:

print('Mary's teacher stated that she has a 3.0 GPA.') # returns SyntaxError: invalid syntax

ถ้าคุณตอบว่า "การใช้เครื่องหมายอ้างอิงประเภทเดียวกันภายในเครื่องหมายอ้างอิง" คุณก็ถูกต้อง มีหลายวิธีในการหลีกเลี่ยงข้อผิดพลาดด้านไวยากรณ์เมื่อใช้เครื่องหมายอ้างอิงใน Python

1. ใช้เครื่องหมายอ้างอิงคู่ (double quotation marks)

print("Mary's teacher stated that she has a 3.0 GPA.")

2. ใช้เครื่องหมายแบ็กสแลช (backslash)

print('Mary\'s teacher stated that she has a 3.0 GPA.')

การใช้ไวยากรณ์ใหม่กับเวอร์ชัน Python เก่า

ตรวจสอบให้แน่ใจว่าไวยากรณ์ที่คุณใช้เข้ากันได้กับเวอร์ชัน Python ที่คุณใช้งาน ตัวอย่างเช่น Python เวอร์ชันก่อน 3.6 จะไม่สามารถรู้จัก f-strings ได้ และจะโยนข้อผิดพลาด invalid syntax หากคุณรันไวยากรณ์นั้น นักพัฒนาสามารถอัปเดตเวอร์ชัน หรือใช้ไวยากรณ์ที่เข้ากันได้กับเวอร์ชันที่ตั้งไว้

student_gpas = { 'Mary': 3.0, 'Tim': 2.5, 'John': 4.0 }
print(f'Mary has a {student_gpas["Mary"]} GPA.') # returns SyntaxError: invalid syntax on older versions of Python

การใช้คีย์เวิร์ด Python อย่างไม่เหมาะสม

วิธีที่ดีที่สุดในการรู้ว่าคุณกำลังใช้คีย์เวิร์ด Python อย่างไม่เหมาะสมคือการรู้ว่าคีย์เวิร์ดเหล่านั้นคืออะไรและใช้ทำอะไรใน Python สำหรับภาพรวมเชิงลึกเกี่ยวกับคีย์เวิร์ด Python บางส่วน โปรดดูบทความ How to Use the Python not Keyword, The Python Yield Keyword: A Guide, และ Python positional argument follows keyword argument Solution

ลองหาว่าทำไมข้อผิดพลาดด้านไวยากรณ์ในโค้ดด้านล่างถึงถูกโยนออกมา:

continue = True
print(continue) # returns SyntaxError: invalid syntax

ถ้าคุณตอบว่า "เพราะเรากำลังตั้งค่าให้กับคีย์เวิร์ด" คุณถูกต้อง Continue เป็นคีย์เวิร์ดใน Python ที่ใช้เพื่อดำเนินการต่อไปยังรอบวนซ้ำ (iteration) ถัดไปของลูป วิธีแก้ไขข้างต้นคือการตั้งค่า boolean True ให้กับชื่อตัวแปรที่ไม่ใช่คีย์เวิร์ดของ Python

on = True
print(on) # returns True