Ачааллж байна...
Та эргэж ирлээ. Энэ нь өөрөө нэлээд том зүйл гэдгийг эхлээд хэлье. Python-ы анхан шатны сургалт бол богино зам биш байсан: та хувьсагчаас эхэлж, төрлүүдийг ялгаж сурч, if/else-ээр программдаа шийдвэр гаргуулж, loop-оор давтагдах ажлыг машинд даалгаж, function бичиж кодоо цэгцлэн, string, list, dictionary-тэй ажиллаж, алдаа гарахад унахгүйгээр барьж авахыг try/except-ээр эзэмшиж, файл уншиж бичиж, import-оор бусдын бичсэн кодыг ашиглаж, эцэст нь class гэж юу болохыг үзсэн. Эдгээр нь тус тусдаа сэдэв биш, харин нэг бүхэл ур чадвар болж таны дотор суусан гэдгийг та өөрөө мэдэрч байгаа байх. Одоо та кодыг хараад "энэ юу хийж байгаа юм бол" гэж айхаа больсон, харин "энэ ингэж ажиллаж байна" гэж унших чадвартай болсон. Тэр чадварыг олж авахад тань хэдэн долоо хоног, магадгүй хэдэн сар зарцуулагдсан байх, тэр цагийг та зөв зарцуулсан.
Энэ шинэ сургалт бол өмнөх сургалтын үргэлжлэл, гэхдээ давталт биш. Бид анхан шатны сэдвүүдийг дахин эхнээс нь заахгүй. Харин тэдгээр дээр шинэ давхарга барина. Заримдаа Курс 1-ийн жишээ, төслүүд рүү эргэж хандах болно — харилцагчийн дэвтэр, тэмдэглэлийн дэвтэр, хийх ажлын жагсаалт, тоо таах тоглоом — учир нь таны аль хэдийн бичиж үзсэн кодыг сайжруулж харуулах нь шинэ ойлголтыг ойлгуулах хамгийн хүчтэй арга юм. Танил кодыг мэргэжлийн түвшинд дахин бичих мөч бүр танд "аан, тэгвэл өмнө нь би яагаад ингэж бичээд байсан юм бэ" гэсэн ойлголтыг өгнө. Тэр мөчүүд бол суралцахуйн хамгийн үнэ цэнэтэй мөчүүд.
Энэ сургалтын зорилгыг би нэг өгүүлбэрээр хэлье: сургалтын төгсгөлд та FastAPI гэх мэт орчин үеийн framework-ийн албан ёсны documentation-ыг нээгээд, уншаад, ойлгодог болно.
Энэ зорилго энгийн сонсогдож магадгүй ч гэсэн жинхэнэ утгаараа маш өндөр зорилго юм. Яагаад гэвэл орчин үеийн Python-ы documentation бүхэн уншигч нь тодорхой зүйлсийг аль хэдийн мэддэг гэж таамагладаг. Тэд танаас type hint уншиж чадна гэж хүлээж байдаг. Тэд @ тэмдэг юу хийдгийг та мэднэ гэж үздэг. Тэд JSON гэж юу болох, HTTP request гэж юу болох, virtual environment гэж юу болохыг тайлбарлахгүйгээр өнгөрдөг. Тэд async def гэж бичсэн кодыг харуулаад, та ядаж энэ юу гэсэн үг болохыг таньна гэж найддаг. Курс 1-ийг дүүргэсэн хүн эдгээрийн ихэнхийг мэдэхгүй — тэр нь буруу биш, зүгээр л тэр мэдлэгүүдийг хэн ч заагаагүй байгаа юм.
Тэгэхээр энэ сургалтын жинхэнэ ажил бол таны Python-ы мэдлэг ба орчин үеийн framework-үүдийн хүлээлтийн хоорондох тэр цоорхойг бүрэн нөхөх явдал. Бид тэр цоорхойг хэсэг хэсгээр нь, яаралгүйгээр, ойлгомжтой болтол нь тайлбарлаж дүүргэнэ. Сургалтын төгсгөлд та FastAPI-гийн documentation-ыг нээгээд, тэнд бичсэн зүйлсийн ард юу байгааг мэддэг хүн болж уншина. Тэр мэдрэмж — өмнө нь ойлгомжгүй байсан зүйл гэнэт ойлгомжтой болох тэр мэдрэмж — энэ сургалтын өгөх хамгийн том шагнал.
Framework гэдэг үгийг би энэ сургалтын турш олон удаа хэрэглэх болно, тиймээс одооноос жаахан таниулъя. Гэхдээ бүрэн, зөв тодорхойлолтыг нь Бүлэг 15-д, та бүх шаардлагатай мэдлэгээ цуглуулсны дараа өгнө — учир нь одоо өгвөл тэр тодорхойлолт зүгээр л үг болж үлдэнэ, ойлголт болохгүй.
Одоохондоо ингэж бодоод байгаарай: та Курс 1-д import ашиглаж бусдын бичсэн кодыг дуудаж байсан. Жишээ нь random модулийг import хийгээд random.randint() гэж дуудахад тэр код танд тоо буцаадаг байсан. Тэнд та л дарамтлагч тал байсан — та кодоо бичээд, хэрэгтэй үедээ бусдын функцийг дуудаж байсан. Framework бол үүний эсрэг зохион байгуулалттай: та кодоо бичээд өгдөг, гэхдээ түүнийг хэзээ дуудахыг framework өөрөө шийддэг. Та хүлээж байдаг, тэр дууддаг. Энэ эргүүлэлт эхлээд хачин санагддаг, гэхдээ энэ бол вэб сервер, гар утасны программ, тоглоомын engine бүхэн ажилладаг арга юм.
FastAPI бол вэб API бүтээх зориулалттай орчин үеийн Python framework. Та түүгээр программ бичвэл, тэр программ тань интернэтэд байрлаж, бусад программ түүнээс мэдээлэл асууж чаддаг болно. Яг л таны утасны цаг агаарын программ хаа нэгтээ байгаа серверээс мэдээлэл авдагтай адил — тэр сервер яг ийм зүйлээр бичигдсэн байдаг. Энэ сургалтын хамгийн сүүлийн том дасгал бол яг тийм жижиг API-г та өөрөө бичих явдал байх болно.
Би танд юу амлаж байгаагаа, мөн юу амлахгүй байгаагаа тодорхой хэлмээр байна. Худал амлалт бол багшийн хийж болох хамгийн муу зүйл.
Энэ сургалт FastAPI-г гүнзгий заахгүй. Бид түүнийг сургалтын төгсгөлд амталж үзнэ — жижиг ажиллагаатай API бичиж, өөрсдийн гараар ажиллуулж, browser-ээр нээж харна. Тэр мөч жинхэнэ, тэр программ жинхэнэ ажиллана. Гэхдээ FastAPI-г бүрэн эзэмших нь өөр нэг бүтэн сургалтын ажил, тэр нь ирээдүйд болно. Мөн энэ сургалт database, SQL, HTML, CSS, вэб сайтын гадаад дизайн, программаа интернэтэд байршуулах (deployment), Docker, тест бичих framework-үүдийг заахгүй. Async programming-ийг бид ойлголтын түвшинд, уншиж таних түвшинд авч үзнэ — эзэмших түвшинд биш, тэгэхийн тулд шаардлагагүй.
Энэ бол сул тал биш, харин ухаалаг шийдвэр. Хэт олон зүйлийг гүехэн заахаас цөөн зүйлийг гүнзгий заасан нь дээр. Та энэ сургалтын төгсгөлд өөрийн мэддэг зүйлээ жинхэнэ мэддэг байх болно, харин "сонсож байсан" зүйлсийн жагсаалт цуглуулахгүй.
Курс 1-д ажилласан бүх дүрэм энд хэвээрээ хадгалагдана, учир нь тэдгээр нь ажилласан.
Шалгалт байхгүй. Шүүлэг байхгүй. Гэрийн даалгавар байхгүй. Оноо байхгүй. Хичээл бүрийн төгсгөлд таныг шалгах юм байхгүй. Гэрчилгээ авахын тулд хичээлүүдээ үзэж дуусгахад л хангалттай — өөр ямар ч нөхцөл байхгүй. Би энэ шийдвэрийг санамсаргүй гаргаагүй: шалгалт нь ойлголт өгөхгүйгээр түгшүүр төрүүлдэг, гэрийн даалгавар нь сурах хүслийг үүрэг болгон хувиргадаг. Энд танд тайван орчин л хэрэгтэй.
Хурд гэж байхгүй. Хичээл нэг бүр таны хүссэн үед, хүссэн хэмжээгээрээ. Нэг хичээлийг гурван удаа уншиж болно. Нэг долоо хоног завсарлаж болно. Буцаж очиж хуучин хичээлээ дахин үзэж болно — тэр нь ухарсан хэрэг биш, харин зөв хийж байгаа хэрэг. Аль ч хурд бол зөв хурд.
Хичээл дотор заримдаа "туршаад үзээрэй" гэсэн санал гарч ирнэ. Эдгээр нь үргэлж САНАЛ, хэзээ ч ҮҮРЭГ биш. Хийвэл сайн, хийхгүй бол ямар ч асуудалгүй — дараагийн хичээлүүд таныг тэдгээрийг хийсэн гэж хэзээ ч таамаглахгүй. Сониуч зантай хүнд зориулсан нэмэлт хаалга л гэж ойлгоорой.
Кодын нэр томьёо англиар хэвээр байна. Variable, function, list, dictionary гэсэн үгсийг бид монголчилохгүй, харин монголоор бүрэн тайлбарлана. Шинэ нэр томьёо бүр гарч ирэхдээ бүрэн тайлбартай гарч ирнэ. Учир нь хэзээ нэгэн цагт та англи хэл дээрх documentation уншина, тэр үед эдгээр үгс тантай танил байх ёстой.
Сургалт таван түвшинтэй, тус бүр нь өмнөхөө дээр барина.
Түвшин 1 — Мэргэжлийн суурь. Мэргэжлийн хүмүүс төслөө хэрхэн тусгаарладаг (virtual environment), сан хэрхэн зөв суулгадаг (pip, requirements.txt), кодоо хэрхэн цэвэрхэн бичдэг (comprehension, enumerate, zip, slicing), function-ээ хэрхэн уян хатан болгодог (default утга, keyword argument, *args) — эдгээрийг үзнэ. Түвшний төгсгөлд текст файлын статистик гаргадаг хэрэгсэл хамтдаа бичнэ.
Түвшин 2 — Өгөгдөл ба төрөл. Type hint гэж юу болох, яагаад орчин үеийн framework бүхэн түүн дээр баригдсаныг ойлгоно. Tuple, set, үүрлэсэн бүтцүүдийг үзээд, JSON ба CSV форматтай ажиллана. Түвшний төгсгөлд зарлагын бүртгэлийн программ бичнэ — JSON файлд хадгалдаг, бүрэн type hint-тэй.
Түвшин 3 — OOP гүнзгийрүүлэх. Курс 1-ийн class-ыг үнэхээр гүнзгийрүүлнэ: inheritance, special method-ууд, property, dataclass. Түвшний төгсгөлд номын сангийн систем бичнэ.
Түвшин 4 — Гадаад ертөнц. Энд таны программ анх удаа интернэттэй ярина. Decorator гэж юу болох, @ тэмдгийн ард юу нуугдаж байдгийг эцэст нь тайлна. HTTP, API, request, response — эдгээрийг тэг мэдлэгээс эхлэн тайлбарлана. Түвшний төгсгөлд жинхэнэ цаг агаарын API-аас мэдээлэл татдаг, олон файлаас бүрдсэн программ бичнэ.
Түвшин 5 — Framework-д бэлэн. Generator, өөрийн exception, context manager, iterator — гүнзгий хэрэгслүүд. Async-ийг уншиж таних түвшинд. Дараа нь сургалтын оргил: та өөрийн гараар FastAPI программ бичиж, ажиллуулж, browser-ээрээ нээж харна. Тэгээд /docs хуудсыг нээхэд таны бичсэн type hint-үүдээс автоматаар үүсэн гарсан баримт бичиг харагдана — тэр мөч бол энэ сургалтын бүх хөдөлмөрийн шагнал.
Долоо хоногт хоёр гурван хичээл үзэх хурдаар яваад дөрөв, таван сар орчим хугацаа шаардагдана. Гэхдээ энэ бол таамаг л, амлалт биш. Долоо хоногт нэг хичээл үзвэл удаан явна, гэхдээ явна. Зарим хичээлийг хоёр өдөр уншиж болно, зарим нь нэг цагт орно. Курс 1-д тань ажилласан тэр хурд энд ч бас ажиллана.
Дараагийн хичээлээс бид шууд мэргэжлийн зуршил руу орно: virtual environment гэж юу вэ, яагаад мэргэжлийн Python программист бүхэн шинэ төсөл эхлэх бүрдээ түүнийг үүсгэдэг вэ. Энэ бол таны компьютер дээр төслүүд хоорондоо хутгалдахаас сэргийлдэг энгийн ч гэсэн маш чухал зуршил. Мөн энэ бол Бүлэг 11-д requests сан суулгах, Бүлэг 15-д FastAPI суулгах үед танд шаардагдах суурь юм.
Энэ сургалт нь Курс 1-ийн үргэлжлэл — анхан шатны сэдвийг дахин заахгүй, харин тэдгээр дээр барина.
Зорилго: сургалтын төгсгөлд FastAPI гэх мэт framework-ийн documentation-ыг уншиж ойлгодог болох.
FastAPI-г төгсгөлд амталж, жижиг ажиллагаатай API бичнэ — гэхдээ гүнзгий эзэмших нь ирээдүйн сургалтын ажил.
Дүрэм өөрчлөгдөөгүй: шалгалт байхгүй, гэрийн даалгавар байхгүй, өөрийн хурдаараа.
Framework гэж юу болохыг Бүлэг 15-д бүрэн тайлбарлана — одоохондоо "та түүнийг дууддаггүй, тэр таныг дууддаг" гэж санаж явахад хангалттай.
Тавтай морил. Эхэлье.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.