Programming? – Telegram
Programming?
12K subscribers
373 photos
645 videos
978 files
511 links
🏅Channel privileges

🎗Ninth year of operation
🎗Completely specialized members
🎗Transmitter in channel automation
🎗, ...

🎯 second channel Programming books 👇
@topbookit

🎯 third channel laptop👇
@sysline


👨🏻‍💻Admin channels : @coderme
Download Telegram
قبلا یه سری چیزا راجع به خطاها گفتیم، ولی اونا همشون فقط برای این بود که وقتی خطا رو تو نمایشگر دیدیم بتونیم بفهمیم خطا رخ داده !
در این قسمت میخوایم بیشتر بشناسیمشون، وقتی بتونیم بیشتر بشناسیمشون، میتونیم ازشون جلوگیری کنیم !

خوب من الان میخوام یه خطا بوجود بیارم:
👇👇👇👇👇
زمانی که در مفسر مستقیما کد بزنیم و به خطا برخورد کنیم، جلوی فایل چیزی شبیه به <pushell#0> رو میبینیم، و همچنین همیشه هم کنار line عدد خطی رو که درش حطا وجود داره رو خواهیم دید و بعد از in هم نام ماژول رو میبینیم.

خطا ها در پایتون اسم های خاصی دارن، برای مثال در خطای بالا اسم خطای ما NameError هستش،
برای یک برنامه نویس حرفه ای پایتون این لازمه که این خطا هارو بشناسه، یا حد اقل اگر همرو حفظ نبود، ولی موقع دیدنشون بتونه بفهمه این خطاها به چه علت به وجود میان.
زمانی که ما مفسر رو باز میکنیم، یک سری متغیر ها به صورت پیشفرض مقدار دهی میشن،
برای همین هم توصیه میشه که از این نام ها برای متغیر هاتون استفاده نکنید، چون جایگزین اونا میشن و دیگه اونا تو برنامتون کار نمیکنن، برای مثال ()print :
👇👇👇👇👇
تابع پیشساخته ()dir در پایتون همیشه یک لیست بهمون تحویل میده، اعضای این لیست تمامی متغیر ها و توابع و کلاس های موجود در مفسر هستند، همچنین اگر نام یک ماژول رو به عنوان آرگومان بهش بدیم، لیستی که بعمون میده شامل متغیر ها و توابع و کلاس های داخل اون ماژول خواهد بود !
👇👇👇👇👇
اعضای اول این لیست بلند بالا که همشون آخرشون کلمه ی Error رو دارن، اسم Error های پایتون هستند، البته اینها همشون کلاس پایتون هستند، و وقتی در جایی برنامه ای میخواد خطا بده، از این کلاس ها استفاده میکنه.
با استفاده از کلمه ی کلیدی raise و کلاس خطای مورد نظر میتونیم خطا ایجاد کنیم،
فقط کافیه بعد از کلمه ی raise با رعایت یک فاصله اسم کلاس خطا رو بیاریم و یک رشته (که قراره متن خطامون باشه) به عنوان آرگومان بهش بدیم:
👇👇👇👇👇
برای مثال من اسکریپتی مینویسم که اگر کاربر توش بهم جواب اشتباه بده، خطا بگیره:
👇👇👇👇👇
خوب همون قدر که خطا دادن به کاربر میتونه مفید باشه، جلوگیری از خیلی خطا ها هم میتونه مفید باشه،
این کار در پایتون توسط دو کلمه ی کلیدی try و except انجام میشه،
به این صورت که شما بعد از نوشتن کلمه ی try و گذاشتن دو نقطه جلوش به خط بعد میری و با رعایت تو رفتگی نسبت به try دستورات خودتون رو مینویسید، در پایاین دستورات خودتون به خط بعد میرید و به اندازه تو رفتگی try به عقب برمیگردید و دستور except رو مینویسید به همراه دو نقطه و به خط بعد میرید و با رعایت تورفتگی نسبت به except دستوراتی رو مینویسید که میخواید در صورت بروز خطا اجرا بشن.

در این صورت ابتدا مفسر تلاش میکنه دستورات بدنه ی try رو اجرا کنه، اگر هیچ خطایی رخ نداد، از بدنه ی except صرف نظر میکنه ولی اگر در حین اجرای بدنه ی try خطایی رخ داد، اون خطا به کاربر نشون داده نمیشه و در عوض بدنه ی except اجرا میشه.
برای مثال تابعی که من در زیر مینویسم تلاش میکنه تابعی رو که به عنوان آرگومان بهش میدم رو اجرا کنه و اگر خطایی رخ داد، خطا رو نادیده میگیره و متنی رو که به عنوان آرگومان بهش میدم رو بهمون نشون میده:
👇👇👇👇👇
باید کاملا حواستون به این مطلب باشه که فقط از خطاهایی صرف نظر میشه که در بدنه ی try ممکنه بوجود بیان و اگر در بدنه ی except شما خطایی بوجود بیاد (اگر اون رو هم با try و except مستتر نکرده باشید) قطعا خطا به کاربر نشون داده میشه.

و این که حتما try و except رو از نظر تو رفتگی درست بنویسید.
خوب،
الان میتونم اشک شوق رو تو چشم خیلی ها ببینم، ممکنه حس کنید که دیگه کلا از شر خطاها خلاص شدین، چون حالا دیگه بلدید کل برنامتون رو در بدنه ی try بنویسید،و تهش هم یه except بذارید! البته اونایی که هوششون بیشتره مرتب تر مینویسن و همرو در یه تابع میدن به یه تابع دیگه که توش try و except کار گذاشتن اجرا کنه !



خوب به مثال زیر توجه کنید:
👇👇👇👇👇
واقعا فایل موجود نیست؟
اگر به برنامه با دقت نگاه کنید میبینید که من Open رو نوشتم Apen !
در واقع خطای ما اینجا از نوع خطای NameError هستش چون تابعی به نام apen نداریم و ربطی به موجودیت فایل نداره، اما بعد از اجرا خودمون رو با برنامه خودمون گول میزنیم !


این روش try و except که الان آموزش دادم یک روش کاملا آماتوری بود و اگر بخواید تو این سطح ازش استفاده کنید بهتون قول 100% میدم که همیشه تو برنامه هاتون دنبال این موارد اشتباهاتی که یه نمونشو مثال زدم میگردید !

پایتون باهوش امکان این رو فراهم کرده که بتونید بعد از یک try چندین except بنویسید،
همچنین میتونید بعد از except با رعایت یک فاصله، اسم خطا رو بنویسید و بعد دو نقطه بذارید و بدنه ی هر نوع خطا رو جداگانه بنویسید،
اگر کلاس open فایلی رو که اسمش رو بهش دادیم پیدا نکنه برای خواندن، خطای FileNotFoundError میده:

👇👇👇👇👇
همونطور که دیدید، در قسمت دوم که برنامه رو تصحیح کردم و اجرا کردم، با خطای FileNotFoundError مواجه شدیم و بدنه ی except اجرا شد !
خوب، هنوز 3 قسمت دیگه از خطاها مونده،
قسمت اولش اینه که میتونیم یه قسمت به نام finally هم زیر try و except اضافه کنیم،
قسمت دوم اینه که try و except میتونه else هم داشته باشه و
قسمت سوم این که چطور خطاها یی بسازیم با اسم هایی که خودمون میخوایم، مثلا PouriyaError ؟

اینا رو در جلسات بعدی میگم.
👍1
در جلسه ی بعد ما قراره با کتابخانه sqlite3 از پایتون کار کنیم،
شما موظف هستین برید اول تحقیق کنید که SQLite چیه، بعدش چند تا دستور ساده SQL مثل:
ساختن جدول
ورود اطلاعات
خروج اطلاعات
...
رو یاد بگیرید، چون من اینارو اینجا توضیح نمیدم ، در جلسه ی بعد که کار با sqlite رو یاد گرفتیم،
بعدش باید یه تمرین بهتون میدم،
جزئیات تمرین رو همون جلسه ی بعد بهتون میدم،
ولی نتیجش اینه که بعد از اجرای سرور دیکشنری خودتون، مرورگر اینترنتتون رو باز کنید و داخل پایگاه داده کلماتتون کلمه وارد یا خارج یا جستجو کنید !

با استفاده از
sqlite3
socket (که جلسه بعد توضیح میدم)
یه دانش خیلی کم از HTML.