آموزش پایتون - خطاهای سینتکس

خطاهای سنتکس در پایتون

در پایتون، خطاهای سنتکس (نحوی) از جمله رایج‌ترین خطاهایی هستند که برنامه‌نویسان، به‌ویژه افراد تازه کار، با آن‌ها مواجه می‌شوند. این آموزش به شما کمک می‌کند تا درک کنید خطاهای سنتکس چیستند، چگونه آن‌ها را شناسایی کنید و چطور آن‌ها را برطرف سازید.

خطای سنتکس چیست؟

خطای سنتکس در پایتون (یا هر زبان برنامه‌نویسی دیگری) خطایی است که هنگام پیروی نکردن کد از قوانین نحوی زبان رخ می‌دهد. خطاهای سنتکس توسط مفسر یا کامپایلر در زمان پارس کردن (تجزیه) کد تشخیص داده می‌شوند و از اجرای کد جلوگیری می‌کنند.

این خطاها به این دلیل رخ می‌دهند که کد نوشته‌شده با قوانین دستوری پایتون مطابقت ندارد و باعث می‌شود مفسر نتواند دستورات را درک و اجرا کند.

دلایل رایج خطاهای سنتکس

در ادامه دلایل رایج خطاهای سنتکس آورده شده است −

  • فراموش کردن دو نقطه (:) بعد از دستورات کنترلی (مانند if، for، while) − از دو نقطه برای تعریف شروع یک بلوک دارای تورفتگی، مانند توابع، حلقه‌ها و شرط‌ها استفاده می‌شود.
# Error: Missing colon (:) after the if statement
if True
   print("This will cause a syntax error")
  • تورفتگی نادرست − پایتون از تورفتگی (Indentation) برای تعریف ساختار بلوک‌های کد استفاده می‌کند. تورفتگی نادرست می‌تواند منجر به خطاهای سنتکس شود.
# Error: The print statement is not correctly indented
def example_function():
print("This will cause a syntax error")
  • غلط املایی در کلمات کلیدی یا استفاده نادرست از آن‌ها.
# Error: 'print' is misspelled as 'prnt'
prnt("Hello, World!")  
  • پرانتزها، کروشه‌ها یا آکولادهای بسته‌نشده − پایتون نیاز دارد که تمام پرانتزهای باز (، کروشه‌های باز [ و آکولادهای باز { دارای کاراکترهای بسته متناظر )، ] و } باشند.
# Error: The closing parenthesis is missing.
print("This will cause a syntax error"

نحوه شناسایی خطاهای سنتکس

شناسایی خطاهای سنتکس در پایتون گاهی اوقات می‌تواند آسان باشد، به‌ویژه زمانی که یک پیام خطای واضح از مفسر دریافت می‌کنید. با این حال، در موقعیت‌های دیگر ممکن است کمی چالش‌برانگیز باشد. در ادامه چند روش برای کمک به شناسایی و رفع موثر خطاهای سنتکس آورده شده است −

خواندن پیام‌های خطا

هنگامی که یک اسکریپت پایتون را اجرا می‌کنید، مفسر در صورت مواجهه با خطای سنتکس، اجرای برنامه را متوقف کرده و پیام خطا را نمایش می‌دهد. درک نحوه خواندن این پیام‌های خطا بسیار مهم است.

نمونه پیام خطا

File "script.py", line 1
   print("Hello, World!"
                        ^
SyntaxError: EOL while scanning string literal

این پیام خطا را می‌توان به بخش‌های زیر تجزیه کرد −

  • File "script.py": فایلی را که خطا در آن رخ داده است نشان می‌دهد.

  • line 1: شماره خطی از فایل را که مفسر خطا را در آن تشخیص داده است نشان می‌دهد.
  • print("Hello, World!": خط کدی دارای خطا را نمایش می‌دهد.

  • ^: به مکانی در خط که خطا در آنجا تشخیص داده شده اشاره می‌کند.

استفاده از محیط توسعه یکپارچه (IDE)

محیط‌های IDE در شناسایی خطاهای سنتکس بسیار مفید هستند زیرا اغلب بازخورد لحظه‌ای ارائه می‌دهند. در ادامه برخی از ویژگی‌های IDEها که به شناسایی خطاهای سنتکس کمک می‌کنند آورده شده است −

  • برجسته‌سازی سنتکس (Syntax Highlighting): محیط‌های IDE ساختار نحوی کد را با رنگ‌های مختلف برجسته می‌کنند. اگر بخشی از کد به رنگ نادرستی درآید، ممکن است نشان‌دهنده خطای سنتکس باشد.

  • بررسی‌کننده کد (Linting): ابزارهایی مانند pylint یا flake8 کد شما را از نظر خطاها و مسائل سبک نگارش بررسی می‌کنند.

  • زیرخط کشیدن خطاها (Error Underlining): بسیاری از IDEها زیر خطاهای سنتکس را با یک خط قرمز موج‌دار مشخص می‌کنند.

  • راهنماها و پیام‌های خطا (Tooltips and Error Messages): نگه داشتن نشانگر موس روی کد زیرخط‌دار شده، اغلب راهنمایی حاوی توصیف خطا ارائه می‌دهد.

از IDEهای محبوب دارای این ویژگی‌ها می‌توان به PyCharm، Visual Studio Code و Jupyter Notebook اشاره کرد.

اجرای کد در بخش‌های کوچک

اگر اسکریپت بزرگی دارید، اجرا کردن کد در بخش‌های کوچک‌تر می‌تواند مفید باشد. این کار به جداسازی بخشی از کد که باعث ایجاد خطای سنتکس می‌شود کمک می‌کند.

به عنوان مثال، اگر اسکریپتی با چندین تابع دارید و دچار خطای سنتکس می‌شوید، سعی کنید هر تابع را به‌طور مستقل اجرا کنید تا محل دقیق خطا را محدودتر کنید.

استفاده از سیستم کنترل نسخه

سیستم‌های کنترل نسخه مانند Git می‌توانند به شما در پیگیری تغییرات کد کمک کنند. اگر با خطای سنتکس مواجه شدید، می‌توانید نسخه فعلی کد را با نسخه‌های قبلی مقایسه کنید تا ببینید چه تغییراتی ممکن است باعث ایجاد خطا شده باشند.

برطرف کردن خطاهای سنتکس

برطرف کردن خطاهای سنتکس در پایتون شامل درک پیام خطای ارائه شده توسط مفسر، شناسایی مشکل دقیق در کد و سپس اعمال اصلاحات لازم است. در ادامه راهنمای مفصلی برای مواجهه سیستماتیک و رفع خطاهای سنتکس آورده شده است −

پیام خطا را با دقت بخوانید

پیام‌های خطای پایتون بسیار آموزنده هستند. آن‌ها نام فایل، شماره خط و نوع خطای سنتکس را نشان می‌دهند −

نمونه پیام خطا

فرض کنید یک دستور چاپ (print) را مطابق زیر نوشته‌ایم −

print("Hello, World!"

پیام زیر نشان می‌دهد که یک خطای سنتکس در خط ۱ وجود دارد و مشخص می‌کند که در جایی از کد، یک پرانتز بسته نشده است، که منجر به خطای سنتکس می‌شود.

File "/home/cg/root/66634a37734ad/main.py", line 1
    print("Hello, World!"
         ^
SyntaxError: '(' was never closed

برای رفع این خطا، باید مطمئن شوید که هر پرانتز باز، یک پرانتز بسته متناظر دارد. کد اصلاح‌شده در ادامه آمده است −

print("Hello, World!")

محل خطا را پیدا کنید

برای پیدا کردن محل خطا، باید به شماره خط ذکر شده در پیام خطا بروید. علاوه بر این، نه تنها خط مشخص‌شده، بلکه خطوط اطراف آن را نیز بررسی کنید، زیرا گاهی اوقات ممکن است مشکل از خطوط قبلی ناشی شده باشد.

ماهیت خطا را درک کنید

برای درک ماهیت خطا، باید نوع خطای سنتکس را مشخص کنید (مانند پرانتز مفقود، تورفتگی نادرست، دو نقطه مفقود و غیره). همچنین به خطاهای سنتکس رایج و الگوهای آن‌ها مراجعه کنید.

سنتکس را اصلاح کنید

بر اساس نوع خطا، کد را تصحیح کنید.

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.