استفاده از پنجره اسکریپت و بررسی خطاها در پایتون

اسکریپت ها با استفاده از پنجره اسکریپت در محیط IDLE نوشته می شوند. می توانید با انتخاب منوی File گزینه New File از منوی بالای پنجره interactive، پنجره اسکریپت را باز کنید. توجه داشته باشید که وقتی پنجره اسکریپت باز می شود، پنجره interactive همچنان باز می ماند.

 هر خروجی تولید شده توسط کد اجرا شده در پنجره اسکریپت در پنجره تعاملی نمایش داده می شود، بنابراین ممکن است بخواهید دو پنجره را طوری در کنار هم قرار دهید تا بتوانید هر دو را همزمان ببینید. در پنجره اسکریپت، همان کدی که برای چاپ "Hello, world" در پنجره interactive استفاده کردید را، تایپ کنید:

print("Hello, world")

درست مانند پنجره interactive ، کدهای تایپ شده در پنجره اسکریپت نیز هایلایت یا برجسته می شوند. وقتی کدی را در یک اسکریپت می نویسید، نیازی به اضافه کردن اعلان >>> ندارید (اعلانی که در پنجره interactive مشاهده می کردید). در نظر داشته باشید اگر کدهایی را از جایی دیگر کپی و جایگذاری می کنید ممکن است آنها شامل اعلان >>> باشند.

قبل از اینکه بتوانید اسکریپت خود را اجرا کنید، باید آن را ذخیره سازی کنید. از منوی بالای پنجره، منوی File سپس Save را انتخاب کرده و اسکریپت را به نام hello_world.py ذخیره کنید. 

پسوند فایل .py یک پسوند معمولی است که برای نشان دادن اینکه فایل حاوی کدهای پایتون است استفاده می شود. در واقع، اگر اسکریپت خود را با هر پسوندی غیر از py ذخیره کنید، هایلایت کدها ناپدید می شود و تمام متن های موجود در فایل به رنگ سیاه نمایش داده می شود.

IDLE فقط زمانی کدهای پایتون را برجسته سازی می کند که در یک فایل py ذخیره شوند. پس از ذخیره اسکریپت، تنها کاری که برای اجرای برنامه باید انجام دهید این است که در پنجره script از منوی Run گزینه Run Module را انتخاب کنید. در این صورت در پنجره تعاملی عبارت Hello, world ظاهر می شود:

Hello, world

همچنین می توانید F5 را فشار دهید تا یک اسکریپت از پنجره اسکریپت اجرا شود. هر بار که یک اسکریپت را اجرا می کنید چیزی شبیه خروجی زیر را در پنجره interactive خواهید دید:

>>> =================== RESTART ===================

این روش IDLE برای جداسازی خروجی از اجرای مجزای یک اسکریپت است. در غیر این صورت، اگر اسکریپت را یکی پس از دیگری اجرا کنید، ممکن است مشخص نباشد که کدام خروجی متعلق به کدام اسکریپت است.

 برای باز کردن یک اسکریپت موجود در IDLE، از منوی پنجره اسکریپت یا پنجره interactive  گزینه File Open را انتخاب کنید. سپس فایل اسکریپتی را که می خواهید باز کنید را جستجو کرده و انتخاب کنید. IDLE اسکریپت ها را در یک پنجره اسکریپت جدید باز می کند، بنابراین می توانید چندین اسکریپت را همزمان باز کنید.

خطا ها

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

  • خطاهای نحوی
  • خطاهای زمان اجرا

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

خطاهای نحوی

به عبارت ساده، یک خطای نحوی زمانی رخ می دهد که کدی را می نویسید که در زبان پایتون مجاز به نوشتن آن نیستید. می توانید با تغییر محتوای اسکریپت hello_world.py در آخرین بخش به موارد زیر، یک خطای نحوی ایجاد کنید:

print("Hello, world)

در این مثال، دابل کوتیشن در انتهای جمله Hello, world حذف شده است. پایتون نمی تواند بفهمد که رشته متنی به کجا ختم می شود. اسکریپت تغییر یافته را ذخیره کنید و سپس سعی کنید آن را اجرا کنید. چه اتفاقی می افتد؟ کد اجرا نمی شود! IDLE یک هشدار را با پیام زیر نمایش می دهد:

EOL while scanning string literal.

EOL مخفف End Of Line است، بنابراین این پیام به شما می گوید که پایتون تمام طول خط را تا انتهای خط خوانده بدون اینکه انتهای رشته را پیدا کند. یک رشته متنی است که در بین دو علامت نقل قول قرار گرفته است. متن "Hello, world" نمونه‌ای از یک لیترال رشته‌ای است.

در پنجره اسکریپت، توجه کنید که خط حاوی "Hello,world" با رنگ قرمز مشخص شده است. این ویژگی مفید به شما کمک می کند تا سریعاً بفهمید کدام خط کد باعث خطای نحوی شده است.

خطاهای زمان اجرا

IDLE قبل از شروع اجرای برنامه، خطاهای نحوی را تشخیص می دهد، اما برخی از خطاها را نمی توان تا زمانی که یک برنامه را اجرا کرد، شناسایی کرد. این خطاها به عنوان خطاهای زمان اجرا شناخته می شوند زیرا فقط در زمان اجرای برنامه رخ می دهند. برای ایجاد خطای زمان اجرا، کد موجود در hello_world.py را به صورت زیر تغییر دهید:

print(Hello, world)

اکنون هر دو کوتیشن عبارت "Hello,world" حذف شده است. آیا متوجه شده اید که وقتی علامت های نقل قول را حذف می کنید، چگونه رنگ متن به سیاه تبدیل می شود؟ IDLE دیگر Hello, world را به عنوان یک رشته تشخیص نمی دهد. فکر می کنید این قطعه کد را اجرا می کنید چه اتفاقی می افتد؟ آن را امتحان کنید و ببینید! در این صورت مقداری متن قرمز رنگ در پنجره interactive نمایش داده می شود:

Traceback (most recent call last):
File "/home/hello_world.py", line 1, in <module>
print(Hello, world)
NameError: name 'Hello' is not defined

چه اتفاقی افتاد؟ هنگام تلاش برای اجرای برنامه پایتون با خطا مواجه شد. هر زمان که خطایی رخ می دهد، پایتون اجرای برنامه را متوقف می کند و خطا را در پنجره IDLE نمایش می دهد.

متنی که برای خطا نمایش داده می شود، traceback نامیده می شود. Traceback ها اطلاعات مفیدی در مورد خطا به شما می دهد. traceback بالا همه موارد زیر را به ما می گوید:

  • خطا در خط شماره 1 رخ داده است.
  • کدی که باعث خطا شده است عبارت است از : print(Hello, world).
  • خطای NameError رخ داده است.
  • متغیر به نام 'Hello' وجود ندارد.

کوتیشن های جمله Hello, world وجود ندارند، بنابراین پایتون متوجه نمی‌شود که این جمله یک رشته متنی است. در عوض، پایتون فکر می‌کند که Hello و world نام چیز دیگری در کد هستند. از آنجایی که نام Hello و world در جایی تعریف نشده است، برنامه از کار می افتد. در بخش بعدی، نحوه تعریف نام برای مقادیر موجود در کدهای خود را خواهید دید.

دیدگاه ها

برای ارسال دیدگاه لازم است ابتدا وارد سایت شوید

اطلاعات مقاله

تاریخ انتشار : 20 مرداد 1401
مولف : حمید رضا ملکی
دسته های این مقاله : پایتون
برچسب های این مقاله : #یادگیری_پایتون #زبان_پایتون #پایتون
اشتراک گذاری در :

هدف لرن سورس

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

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

بخش های اصلی

با استفاده از لینک های زیر میتوانید به بخش های اصلی سایت دسترسی داشته باشید:

راه های ارتباطی

شما کاربران عزیز میتوانید با هر کدام از راه های ارتباطی زیر با تیم آموزشی لرن سورس در ارتباط باشید:

کلیه حقوق مادی و معنوی وبسایت متعلق به لرن سورس می باشد.