زمانی که در مفسر مستقیما کد بزنیم و به خطا برخورد کنیم، جلوی فایل چیزی شبیه به <pushell#0> رو میبینیم، و همچنین همیشه هم کنار line عدد خطی رو که درش حطا وجود داره رو خواهیم دید و بعد از in هم نام ماژول رو میبینیم.
خطا ها در پایتون اسم های خاصی دارن، برای مثال در خطای بالا اسم خطای ما NameError هستش،
برای یک برنامه نویس حرفه ای پایتون این لازمه که این خطا هارو بشناسه، یا حد اقل اگر همرو حفظ نبود، ولی موقع دیدنشون بتونه بفهمه این خطاها به چه علت به وجود میان.
خطا ها در پایتون اسم های خاصی دارن، برای مثال در خطای بالا اسم خطای ما NameError هستش،
برای یک برنامه نویس حرفه ای پایتون این لازمه که این خطا هارو بشناسه، یا حد اقل اگر همرو حفظ نبود، ولی موقع دیدنشون بتونه بفهمه این خطاها به چه علت به وجود میان.
زمانی که ما مفسر رو باز میکنیم، یک سری متغیر ها به صورت پیشفرض مقدار دهی میشن،
برای همین هم توصیه میشه که از این نام ها برای متغیر هاتون استفاده نکنید، چون جایگزین اونا میشن و دیگه اونا تو برنامتون کار نمیکنن، برای مثال ()print :
👇👇👇👇👇
برای همین هم توصیه میشه که از این نام ها برای متغیر هاتون استفاده نکنید، چون جایگزین اونا میشن و دیگه اونا تو برنامتون کار نمیکنن، برای مثال ()print :
👇👇👇👇👇
تابع پیشساخته ()dir در پایتون همیشه یک لیست بهمون تحویل میده، اعضای این لیست تمامی متغیر ها و توابع و کلاس های موجود در مفسر هستند، همچنین اگر نام یک ماژول رو به عنوان آرگومان بهش بدیم، لیستی که بعمون میده شامل متغیر ها و توابع و کلاس های داخل اون ماژول خواهد بود !
👇👇👇👇👇
👇👇👇👇👇
اعضای اول این لیست بلند بالا که همشون آخرشون کلمه ی Error رو دارن، اسم Error های پایتون هستند، البته اینها همشون کلاس پایتون هستند، و وقتی در جایی برنامه ای میخواد خطا بده، از این کلاس ها استفاده میکنه.
با استفاده از کلمه ی کلیدی raise و کلاس خطای مورد نظر میتونیم خطا ایجاد کنیم،
فقط کافیه بعد از کلمه ی raise با رعایت یک فاصله اسم کلاس خطا رو بیاریم و یک رشته (که قراره متن خطامون باشه) به عنوان آرگومان بهش بدیم:
👇👇👇👇👇
با استفاده از کلمه ی کلیدی raise و کلاس خطای مورد نظر میتونیم خطا ایجاد کنیم،
فقط کافیه بعد از کلمه ی raise با رعایت یک فاصله اسم کلاس خطا رو بیاریم و یک رشته (که قراره متن خطامون باشه) به عنوان آرگومان بهش بدیم:
👇👇👇👇👇
برای مثال من اسکریپتی مینویسم که اگر کاربر توش بهم جواب اشتباه بده، خطا بگیره:
👇👇👇👇👇
👇👇👇👇👇
خوب همون قدر که خطا دادن به کاربر میتونه مفید باشه، جلوگیری از خیلی خطا ها هم میتونه مفید باشه،
این کار در پایتون توسط دو کلمه ی کلیدی try و except انجام میشه،
به این صورت که شما بعد از نوشتن کلمه ی try و گذاشتن دو نقطه جلوش به خط بعد میری و با رعایت تو رفتگی نسبت به try دستورات خودتون رو مینویسید، در پایاین دستورات خودتون به خط بعد میرید و به اندازه تو رفتگی try به عقب برمیگردید و دستور except رو مینویسید به همراه دو نقطه و به خط بعد میرید و با رعایت تورفتگی نسبت به except دستوراتی رو مینویسید که میخواید در صورت بروز خطا اجرا بشن.
در این صورت ابتدا مفسر تلاش میکنه دستورات بدنه ی try رو اجرا کنه، اگر هیچ خطایی رخ نداد، از بدنه ی except صرف نظر میکنه ولی اگر در حین اجرای بدنه ی try خطایی رخ داد، اون خطا به کاربر نشون داده نمیشه و در عوض بدنه ی except اجرا میشه.
برای مثال تابعی که من در زیر مینویسم تلاش میکنه تابعی رو که به عنوان آرگومان بهش میدم رو اجرا کنه و اگر خطایی رخ داد، خطا رو نادیده میگیره و متنی رو که به عنوان آرگومان بهش میدم رو بهمون نشون میده:
👇👇👇👇👇
این کار در پایتون توسط دو کلمه ی کلیدی try و except انجام میشه،
به این صورت که شما بعد از نوشتن کلمه ی try و گذاشتن دو نقطه جلوش به خط بعد میری و با رعایت تو رفتگی نسبت به try دستورات خودتون رو مینویسید، در پایاین دستورات خودتون به خط بعد میرید و به اندازه تو رفتگی try به عقب برمیگردید و دستور except رو مینویسید به همراه دو نقطه و به خط بعد میرید و با رعایت تورفتگی نسبت به except دستوراتی رو مینویسید که میخواید در صورت بروز خطا اجرا بشن.
در این صورت ابتدا مفسر تلاش میکنه دستورات بدنه ی try رو اجرا کنه، اگر هیچ خطایی رخ نداد، از بدنه ی except صرف نظر میکنه ولی اگر در حین اجرای بدنه ی try خطایی رخ داد، اون خطا به کاربر نشون داده نمیشه و در عوض بدنه ی except اجرا میشه.
برای مثال تابعی که من در زیر مینویسم تلاش میکنه تابعی رو که به عنوان آرگومان بهش میدم رو اجرا کنه و اگر خطایی رخ داد، خطا رو نادیده میگیره و متنی رو که به عنوان آرگومان بهش میدم رو بهمون نشون میده:
👇👇👇👇👇
باید کاملا حواستون به این مطلب باشه که فقط از خطاهایی صرف نظر میشه که در بدنه ی try ممکنه بوجود بیان و اگر در بدنه ی 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 میده:
👇👇👇👇👇
اگر به برنامه با دقت نگاه کنید میبینید که من Open رو نوشتم Apen !
در واقع خطای ما اینجا از نوع خطای NameError هستش چون تابعی به نام apen نداریم و ربطی به موجودیت فایل نداره، اما بعد از اجرا خودمون رو با برنامه خودمون گول میزنیم !
این روش try و except که الان آموزش دادم یک روش کاملا آماتوری بود و اگر بخواید تو این سطح ازش استفاده کنید بهتون قول 100% میدم که همیشه تو برنامه هاتون دنبال این موارد اشتباهاتی که یه نمونشو مثال زدم میگردید !
پایتون باهوش امکان این رو فراهم کرده که بتونید بعد از یک try چندین except بنویسید،
همچنین میتونید بعد از except با رعایت یک فاصله، اسم خطا رو بنویسید و بعد دو نقطه بذارید و بدنه ی هر نوع خطا رو جداگانه بنویسید،
اگر کلاس open فایلی رو که اسمش رو بهش دادیم پیدا نکنه برای خواندن، خطای FileNotFoundError میده:
👇👇👇👇👇
همونطور که دیدید، در قسمت دوم که برنامه رو تصحیح کردم و اجرا کردم، با خطای FileNotFoundError مواجه شدیم و بدنه ی except اجرا شد !
خوب، هنوز 3 قسمت دیگه از خطاها مونده،
قسمت اولش اینه که میتونیم یه قسمت به نام finally هم زیر try و except اضافه کنیم،
قسمت دوم اینه که try و except میتونه else هم داشته باشه و
قسمت سوم این که چطور خطاها یی بسازیم با اسم هایی که خودمون میخوایم، مثلا PouriyaError ؟
اینا رو در جلسات بعدی میگم.
قسمت اولش اینه که میتونیم یه قسمت به نام finally هم زیر try و except اضافه کنیم،
قسمت دوم اینه که try و except میتونه else هم داشته باشه و
قسمت سوم این که چطور خطاها یی بسازیم با اسم هایی که خودمون میخوایم، مثلا PouriyaError ؟
اینا رو در جلسات بعدی میگم.
👍1
در جلسه ی بعد ما قراره با کتابخانه sqlite3 از پایتون کار کنیم،
شما موظف هستین برید اول تحقیق کنید که SQLite چیه، بعدش چند تا دستور ساده SQL مثل:
ساختن جدول
ورود اطلاعات
خروج اطلاعات
...
رو یاد بگیرید، چون من اینارو اینجا توضیح نمیدم ، در جلسه ی بعد که کار با sqlite رو یاد گرفتیم،
بعدش باید یه تمرین بهتون میدم،
جزئیات تمرین رو همون جلسه ی بعد بهتون میدم،
ولی نتیجش اینه که بعد از اجرای سرور دیکشنری خودتون، مرورگر اینترنتتون رو باز کنید و داخل پایگاه داده کلماتتون کلمه وارد یا خارج یا جستجو کنید !
با استفاده از
sqlite3
socket (که جلسه بعد توضیح میدم)
یه دانش خیلی کم از HTML.
شما موظف هستین برید اول تحقیق کنید که SQLite چیه، بعدش چند تا دستور ساده SQL مثل:
ساختن جدول
ورود اطلاعات
خروج اطلاعات
...
رو یاد بگیرید، چون من اینارو اینجا توضیح نمیدم ، در جلسه ی بعد که کار با sqlite رو یاد گرفتیم،
بعدش باید یه تمرین بهتون میدم،
جزئیات تمرین رو همون جلسه ی بعد بهتون میدم،
ولی نتیجش اینه که بعد از اجرای سرور دیکشنری خودتون، مرورگر اینترنتتون رو باز کنید و داخل پایگاه داده کلماتتون کلمه وارد یا خارج یا جستجو کنید !
با استفاده از
sqlite3
socket (که جلسه بعد توضیح میدم)
یه دانش خیلی کم از HTML.
📖 فهرست دسترسی به جلسات آموزش زبان پایتون
💥 جلسه اول : معرفی زبان پایتون
https://telegram.me/stepbysteplearn/444
💥 جلسه دوم : نصب و راه اندازي
https://telegram.me/stepbysteplearn/458
💥 جلسه سوم : ساختارهای داده ای
https://telegram.me/stepbysteplearn/486
💥 جلسه چهارم : خطاها و معرفي رشته ها
https://telegram.me/stepbysteplearn/503
💥 جلسه پنجم : دستورات شرطی
https://telegram.me/stepbysteplearn/626
💥 جلسه ششم : ادامه ي رشته ها
https://telegram.me/stepbysteplearn/651
💥 جلسه هفتم : معرفي حلقه
https://telegram.me/stepbysteplearn/716
💥 جلسه هشتم : ادامه ي حلقه ها
https://telegram.me/stepbysteplearn/826
💥 جلسه نهم : پايان حلقه ها
https://telegram.me/stepbysteplearn/851
💥 جلسه دهم : کلاس های توکار و معرفی لیست ها
https://telegram.me/stepbysteplearn/898
💥 جلسه یازدهم : تفاوت مهم لیست و رشته و تعریف متد ها
https://telegram.me/stepbysteplearn/931
💥 جلسه دوازدهم : تعریف کتابخانه و تابع
https://telegram.me/stepbysteplearn/950
💥 جلسه سیزدهم : توابع (2)
https://telegram.me/stepbysteplearn/987
💥 جلسه چهاردهم : توابع (3)
https://telegram.me/stepbysteplearn/1023
💥 جلسه پانزدهم : توابع بازگشتی
https://telegram.me/stepbysteplearn/1115
💥 جلسه شانزدهم : معرفی کلاس
https://telegram.me/stepbysteplearn/1155
💥 جلسه هفتدهم : کلاس ها (2)
https://telegram.me/stepbysteplearn/1201
💥 جلسه هجدهم : کلاس ها (3)
https://telegram.me/stepbysteplearn/1239
💥 جلسه نوزدهم : چندتایی ها و دیکشنری ها
https://telegram.me/stepbysteplearn/1266
💥 جلسه بیستم : کتابخانه
https://telegram.me/stepbysteplearn/1285
💥 جلسه بیست یکم : حلقه for
https://telegram.me/stepbysteplearn/1342
💥 جلسه بیست و دوم : شروع با sqLite
https://telegram.me/stepbysteplearn/1357
💥 جلسه اول : معرفی زبان پایتون
https://telegram.me/stepbysteplearn/444
💥 جلسه دوم : نصب و راه اندازي
https://telegram.me/stepbysteplearn/458
💥 جلسه سوم : ساختارهای داده ای
https://telegram.me/stepbysteplearn/486
💥 جلسه چهارم : خطاها و معرفي رشته ها
https://telegram.me/stepbysteplearn/503
💥 جلسه پنجم : دستورات شرطی
https://telegram.me/stepbysteplearn/626
💥 جلسه ششم : ادامه ي رشته ها
https://telegram.me/stepbysteplearn/651
💥 جلسه هفتم : معرفي حلقه
https://telegram.me/stepbysteplearn/716
💥 جلسه هشتم : ادامه ي حلقه ها
https://telegram.me/stepbysteplearn/826
💥 جلسه نهم : پايان حلقه ها
https://telegram.me/stepbysteplearn/851
💥 جلسه دهم : کلاس های توکار و معرفی لیست ها
https://telegram.me/stepbysteplearn/898
💥 جلسه یازدهم : تفاوت مهم لیست و رشته و تعریف متد ها
https://telegram.me/stepbysteplearn/931
💥 جلسه دوازدهم : تعریف کتابخانه و تابع
https://telegram.me/stepbysteplearn/950
💥 جلسه سیزدهم : توابع (2)
https://telegram.me/stepbysteplearn/987
💥 جلسه چهاردهم : توابع (3)
https://telegram.me/stepbysteplearn/1023
💥 جلسه پانزدهم : توابع بازگشتی
https://telegram.me/stepbysteplearn/1115
💥 جلسه شانزدهم : معرفی کلاس
https://telegram.me/stepbysteplearn/1155
💥 جلسه هفتدهم : کلاس ها (2)
https://telegram.me/stepbysteplearn/1201
💥 جلسه هجدهم : کلاس ها (3)
https://telegram.me/stepbysteplearn/1239
💥 جلسه نوزدهم : چندتایی ها و دیکشنری ها
https://telegram.me/stepbysteplearn/1266
💥 جلسه بیستم : کتابخانه
https://telegram.me/stepbysteplearn/1285
💥 جلسه بیست یکم : حلقه for
https://telegram.me/stepbysteplearn/1342
💥 جلسه بیست و دوم : شروع با sqLite
https://telegram.me/stepbysteplearn/1357
Telegram
Programming?
#python