این پست بخشی از پستی بزرگتر است که به زودی تکمیل خواهد شد ...
آشنایی با خطا(error) ها متداول پایتون ، دلایل بروز خطا ، روش های دیباگ کردن ...
ارور ها که نیاز به معرفی ندارند ، عضو جدا نشدنی برنامه نویسی ؛ در این پست میخواهم شما رو با دلایل بروز خطا ها ، روش ها پیشگیری و دیباگ آشنا کنم و در آخر به عنوان تمرین یک کد پر از باگ به شما میدم تا برای دیباگ کردنش با ارور ها آشنا شوید . این ارور ها از پر تکرار ترین ارور ها در پایتون هستند که برنامه نویس های پایتون چه تازه کار چه حرفه ایه با اون روبه رو میشند ! ؛ پس بهتره اونها رو بشناسیم .
تعریف :
اولین اروری که بیشتر برنامه نویس ها با اون برخورد میکنن سینتکس ارور (syntaxError) هست . خطا سینتکس زمانی رخ میده که شما قواعد پایتون رو رعایت نکرده باشید . در واقع دستوری که به مفسر دادید برای اون قابل درک نیست . خوشبختانه در هنگام بروز این خطا ، مفسر ، خط و بخشی که غیر قابل تفسیر بوده و دلیل بروز خطا رو اعلام میکند .
نمونه :
from math import factorial num_in = int(input()) factorial = factorial(,num_in) print(factorial) Error : File "d:/iliya/Programming/languages Programming/Python/code/Factorielle.py", line 3 factorial = factorial(,num_in) ^ SyntaxError: invalid syntax
در خط اول خطا ، آدرس مکانی که فایل در اون قرار دارد و خطی که در هنگام تفسیر به مشکل خورده نمایش داده میشه. در لاین بعد اون خط (line) که برای مفسر غیر قابل درک بوده و خط سوم یک فلش(^) هست که مکان دقیقی که باعث بروز خطا شده رو نمایش میده که این فرایند دیباگ رو ساده میکنه . و خط آخر نوع ارور و دلیل اون رو مینویسه که در این قطعه که عبارت نادرست (invalid syntax) بوده .
روش دیباگ :
دیباگ کردن سینتکس ارور خیلی راحته (بسته به سطح تجربه شما) و حتی بعضی وقت ها کافیه یک کارکتر پاک ، جابجا یا عوض بشه .
تعریف :
زمانی که شما از متغیری استفاده می کنید که تعریف نشده یا حذف شده با این خطا مواجه میشوید . یعنی شما از متغیری استفاده کردید که در حافظه سیستم موجود نیست . کمتر پیش میاد و راحت برطرف میشه .
نمونه :
print(name,age) Error : Traceback (most recent call last): File "d:/iliya/Programming/languages Programming/Python/code/Factorielle.py", line 1, in <module> print(name,age) NameError: name 'name' is not defined
در نِیم ارور (nameError) فقط خط و متغیر ناشناخته نمایش داده میشه . در این قطعه کد دو متغیر تعریف نشده داریم اما همون طور مشاهده می کنید متغیر(name)تعریف نشده نشده است (not defined) در حالی که ما دو متغیر تعریف نشده داریم و بخاطر این هست که زبان پایتون خط به خط و از چپ به راست حرکت میکند و هنوز به متغیر دوم(age) نرسیده .
روش دیباگ :
ما باید بدونیم که متغیری که صدا زدیم برای چی بوده و نام گذاری صحیح خیلی میتونه کمک کنه . ممکن هست متغیر رو تعریف کرده باشیم ولی اشتباهی اول نام متغییر علامت(#(شارپ،هشتگ،مربع)) اومده باشه و توسط مفسر نادیده گرفته بشه ؛ و گاهی ممکن هست صرفا اشتباه تایپی بوده باشه .
تعریف :
این خطا مربوط به زمانی میشه که شما در یک عملیات از مقدار نادرستی استفاده کردید یا از یک تابع که مخصوص یک مقدار خاص است را برای مقداری دیگر استفاده کرده اید . مثلا یک رشته(string) رو با یک عدد جمع کردید . یا به زبان خودمونی کُدا رو ریختین تو ماستا !
نمونه:
a = 1399 print(len(a)) # تعداد کارکتر های رشته رو نشون میده(len)لن Error: Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> len(a) TypeError: object of type 'int' has no len()
روش دیباگ:
به ورودی ها دقت کنید ، گاهی لازم هست مقدار ها تبدیل بشن که نشدند و این باعث بروز خطا میشه . معمولا خطی که دچار خطا شده نمایش داده میشه ، ببنید چه متغیر(هایی) دز اون استفاده شده و دونه دونه متغیر ها رو چک کنید .
روش پیشگیری :
بهتره که از یک IDE استفاده کنید (پیشنهاد من Visual Studio Code هست که به صورت رایگان میتونید اون رو دانلود و استفاده کنید ) خوبی IDE ها اینه که در فرایند دیباگ کردن می توانند خیلی به شما کمک کنند و مهمتر از اون در هنگام نوشتن بعضی از بخش های کد به صورت خودکار نوشته میشود ، کار با اونا هم راحته . استفاده از یک الگوریتم یا فلوچارت(روند نما) هم خیلی میتونه بهتون کمک کنه . در کنار کد ها از کامنت گذاری استفاده کنید .
امیدوارم کمکتون کرده باشم . با نظرات و لایک هاتون ممیتونید از من حمایت کنید ، و با دنبال کردن من میتونید از جدید ترین پست ها من در زمینه برنامه نویسی پایتون مطلع شوید .
ممنون از همراهی شما