Ачааллж байна...
Өнөөдрөөс эхлэн та энэ сургалтын анхны жинхэнэ том ойлголттой танилцана. Өмнөх бүлгүүдэд бид print()-ээр юм хэвлэж сурсан — гэхдээ тэнд нэг дутагдал нуугдаж байсныг та магадгүй мэдэрсэн байх. Бидний программууд юм "хэлж" чаддаг ч, юуг ч санаж чаддаггүй байлаа. Мөр бүр өөрийн ажлаа хийгээд өнгөрдөг, ард нь юу ч үлддэггүй. Гэтэл бодит программууд бүгд юм санадаг: тоглоом таны оноог санадаг, утас таны нэрийг санадаг, банкны апп таны үлдэгдлийг санадаг. Тэр "санах" чадварыг Python-д variable гэдэг зүйл хариуцдаг бөгөөд энэ хичээлд бид түүнтэй танилцана.
Variable (дуудлага нь "вэ́риабл", англиар "хувьсагч" гэсэн утгатай) гэж юу вэ? Хамгийн энгийнээр: variable бол мэдээллийг нэртэй хадгалж, дараа нь тэр нэрээр нь дуудаж ашигладаг арга юм. Та ямар нэг утгыг — тоо, бичвэр, юу ч байсан — авч, түүнд нэр өгч хадгалаад, хожим программынхаа хаана ч тэр нэрийг бичихэд Python хадгалсан утгыг нь гаргаж ирж өгдөг. Энэ бол гайхалтай энгийн санаа, гэхдээ программчлалын бараг бүх зүйл энэ санаан дээр тогтдог: эндээс хойш таны бичих программ бүрд variable байх болно, үүнийг хэтрүүлэг гэж бүү бодоорой — үнэхээр бүрд нь.
Нэг зүйлийг урьдчилан хэлье: "хувьсагч" гэдэг монгол орчуулга нь variable-ийн "утга нь солигдож болдог" гэсэн нэг чанарыг илэрхийлдэг бөгөөд тэр чанарыг бид энэ бүлгийн гуравдугаар хичээлд үзнэ. Өнөөдрийн хичээл бол илүү суурь зүйл — хадгалах, дуудах хоёрыг л бүрэн эзэмшинэ. Мөн сургалтын дүрмээ мөрдөж variable гэдэг үгийг бид англиар нь хэрэглэнэ: таны хожим унших бүх материал, алдааны мэдэгдэл энэ үгийг англиар бичдэг тул одооноос нүд дасгах нь таны хөрөнгө оруулалт юм.
Variable-ийг ойлгох хамгийн сайн зураг бол шошготой хайрцаг юм. Төсөөлөөрэй: танд агуулахын өрөө байна, дотор нь ижилхэн хайрцгууд өрөөстэй. Хайрцаг бүрийн дотор ямар нэг зүйл хийж болно — гэхдээ хайрцгууд гаднаасаа ижилхэн харагддаг тул дотор нь юу байгааг мэдэх ганц арга нь хайрцаг бүрийн урд наасан шошго юм. Та нэг хайрцганд дуртай номоо хийгээд шошгон дээр нь "миний ном" гэж бичлээ. Одоо танд хоёр үйлдэл хийх боломж нээгдлээ. Нэгд — хадгалах: юмаа хайрцганд хийгээд шошгоор нэрлэх. Хоёрт — дуудах: хожим "миний ном гэдэг шошготой хайрцагнаас юмыг нь авчирч өг" гэж хэлэхэд агуулахын ажилтан шошгыг хайгаад, хайрцгийг олоод, доторх зүйлийг авчирч өгнө.
Энэ зургийг Python дээр буулгавал: variable бол шошготой хайрцаг, variable-ийн нэр бол шошго, хадгалсан утга бол хайрцган доторх зүйл, харин агуулахын ажилтан бол Python өөрөө юм. Та "энэ утгыг энэ нэртэй хайрцганд хий" гэж нэг мөрөөр захиад, дараа нь хүссэн үедээ "тэр нэртэй хайрцагны доторхыг авчир" гэж нэрээр нь дууддаг. Хамгийн чухал ойлголт нь энэ: нэрийг дуудахад Python нэрийг өөрийг нь биш, хайрцган доторх утгыг гаргаж ирдэг. Шошго бол зөвхөн олоход зориулагдсан хаяг — жинхэнэ "юм" нь дотор нь байдаг. Энэ ялгааг одоо тогтоочихвол доорх жишээнүүд бүгд өөрөө тайлагдана.
Хайрцгаа Python дээр хийж үзье:
python
ner = "Бат"
print(ner)Үр дүн:
БатМөр бүрийг задалъя. Эхний мөр ner = "Бат" бол хайрцаг үүсгэж буй мөр. Үүнийг Python баруунаас зүүн тийш ойлгодог: эхлээд тэнцүүгийн тэмдгийн баруун талыг харна — "Бат" гэсэн string байна (хашилттай учраас бичвэр гэдгийг та мэднэ). Дараа нь тэнцүүгийн тэмдгийн зүүн талын нэрийг харна — ner. Тэгээд үйлдлээ хийнэ: ner гэсэн шошготой хайрцаг үүсгээд, дотор нь "Бат" гэдгийг хийж хадгална. Энд байгаа = тэмдэг бол математикийн "тэнцүү" биш, харин "баруун талынхыг зүүн талын нэрэнд хадгал" гэсэн үйлдлийн тэмдэг юм — энэ ялгаа маш чухал тул дор дахин ярина. Энэ мөр дэлгэцэнд юу ч хэвлэдэггүйг анзаараарай: хадгалах бол чимээгүй ажил, агуулахад юм хийхэд дэлгэц дээр юу ч болдоггүй.
Хоёр дахь мөр print(ner) бол хайрцгаа дуудаж буй мөр. print-ийн хаалтан дотор ner гэсэн үг хашилтгүй байгааг сайн хараарай. Өмнөх бүлэгт хашилтгүй үг NameError өгдөг байсан — учир нь Python түүнийг "ямар нэг зүйлийн нэр" гэж ойлгоод, тийм нэртэй юм хайгаад олдоггүй байсан юм. Харин одоо олно: бид эхний мөрөнд ner нэртэй хайрцаг үүсгэчихсэн! Python ner гэдэг нэрийг хараад, тийм шошготой хайрцгаа олоод, доторх "Бат" утгыг гаргаж ирж, print түүнийг хэвлэсэн. Тиймээс дэлгэцэнд ner гэж биш, Бат гэж гарсан — шошго биш, доторх нь хэвлэгддэг гэдгийн амьд нотолгоо энэ.
Хоёр дахь жишээ: хашилттай, хашилтгүйн ялгаа. Саяын чухал ажиглалтыг зориуд мөргөлдүүлж баталгаажуулъя:
python
ner = "Сараа"
print("ner")
print(ner)Үр дүн:
ner
СарааХоёр print бараг ижилхэн — ялгаа нь зөвхөн хашилт. Эхнийх нь хашилттай тул Python "ner" гэдгийг string буюу байгаагаар нь зөөх бичвэр гэж үзээд, үсэг үсгээр нь хэвлэсэн: ner. Хоёр дахь нь хашилтгүй тул Python үүнийг нэр гэж ойлгож, хайрцгийг олж, доторх "Сараа"-г хэвлэсэн. Өмнөх бүлгийн "хашилт бол Python-д зориулсан 'энэ бол бичвэр шүү' гэсэн тэмдэглэгээ" гэдэг дүрэм энд шинэ хүчээ авч байна: хашилттай бол үсгээр нь, хашилтгүй бол хайрцагнаас нь. Энэ хоёрын аль хэрэгтэйгээ андуурах нь эхлэгчдийн байнгын будилаан тул энэ жижиг жишээг нүдэндээ хоногшуулаарай.
Гурав дахь жишээ: тоо хадгалах. Хайрцганд string төдийгүй тоо ч хийж болно:
python
nas = 12
print(nas)
print(nas + 3)Үр дүн:
12
15Эхний мөрөнд nas нэртэй хайрцганд 12 гэсэн тоог хийлээ — тоонд хашилт хэрэггүй гэдгийг өмнөх бүлгээс санаж байгаа биз ээ (хашилтад хийвэл "тоо" биш "тооны дүрстэй бичвэр" болно; энэ нарийн ялгааг Бүлэг 5-д дэлгэрэнгүй үзнэ). Хоёр дахь мөр хайрцгийн доторхыг шууд хэвлэв: 12. Харин гурав дахь мөр шинэ зүйл үзүүлж байна: nas + 3 гэдэг нь "nas хайрцагны доторх утгыг аваад, дээр нь 3 нэм" гэсэн үг. Python эхлээд nas-ийн оронд доторх 12-ыг нь тавьж, 12 + 3 болгож бодоод, 15-ыг хэвлэсэн. Хайрцган доторх утга ердийн тоо шиг тооцоололд чөлөөтэй ордог — хамгийн гол нь хайрцагны доторх утга үүнээс болж өөрчлөгдөөгүй: nas дотор 12 хэвээрээ л байгаа, бид зүгээр л утгыг нь "хараад" тооцоололд ашигласан хэрэг.
Дөрөв дэх жишээ: нэг хайрцгийг олон дахин ашиглах. Variable-ийн жинхэнэ хүч энд харагдана:
python
duu = "Аав минь"
print(duu)
print(duu)
print(duu)Үр дүн:
Аав минь
Аав минь
Аав миньНэг удаа хадгалаад — гурван удаа дуудлаа. Хайрцагнаас юм "авахад" доторх нь дуусдаггүй, хуулбар нь гардаг гэж төсөөлж болно: хэдэн ч удаа дуудсан утга нь хэвээрээ. Одоо төсөөлөөрэй — таны программд энэ бичвэр хорин газар хэрэглэгддэг байлаа гэж бод. Variable-гүйгээр та хорин газарт "Аав минь" гэж бичих байсан; variable-тай бол нэг удаа хадгалаад хорин газарт duu гэж бичнэ. Хэрэв дараа нь бичвэрээ өөрчлөх хэрэг гарвал variable-гүй хувилбарт хорин газар засвар хийнэ, variable-тай хувилбарт ганцхан мөр засна. Программистууд "нэг мэдээлэл нэг л газар амьдрах ёстой" гэсэн зарчим баримталдаг бөгөөд variable бол тэр зарчмын биелэл юм.
Тав дахь жишээ: хоёр хайрцаг хамтдаа. Программд хайрцаг олон байж болно, тэд хоорондоо ажиллаж чадна:
python
tugrug = 5000
unee = 1500
print(tugrug - unee)Үр дүн:
3500Мөшгье (өмнөх хичээлийн чадвараа ашиглаад): 1-р мөр tugrug хайрцганд 5000-ыг хийв. 2-р мөр unee хайрцганд 1500-ыг хийв. 3-р мөрөнд Python хоёр нэрийг хоёуланг нь хайрцагнуудаас нь "задалж", 5000 - 1500 болгож бодоод 3500-ыг хэвлэв. Энэ бол таны халаасны мөнгөнөөс амттаны үнийг хассан тооцоо — гурван мөрхөн боловч бүтцээрээ жинхэнэ программ юм: мэдээллээ хадгалсан, дараа нь хадгалсан мэдээллээрээ ажилласан. Мөрийн дараалал энд яагаад амин чухал болохыг та бас анзаарсан байх: хадгалах мөрүүд дуудах мөрөөс өмнө байх ёстой — өмнөх хичээлийн "дээрээс доош" дүрэм ба энэ хичээлийн хайрцагнууд ийнхүү гар нийлж байна.
Хүсвэл өөрийн "хайрцгуудыг" туршаад үзээрэй: өөрийн нэр, нас, дуртай хоолоо гурван variable-д хадгалаад, гурвууланг нь хэвлэж үзэх нь сайхан эхлэл. Сонирхвол нэг variable-ээ хэвлэхээсээ өмнө print хийж үзээрэй — доорх эхний алдаатай "төлөвлөгөөтэйгөөр" уулзах болно.
Алдаа 1: Хадгалахаасаа өмнө дуудах. Хайрцаг үүсгэхээсээ өмнө нэрийг нь дуудвал:
python
print(mori)
mori = "Хүлэг"Python:
NameError: name 'mori' is not definedОрчуулбал: "'mori' гэдэг нэр тодорхойлогдоогүй байна." Танил NameError маань энд шинэ дүрээр гарч ирлээ: нэр байгаа юм, гэхдээ доор нь байгаа. Python дээрээс доош уншдаг тул 1-р мөрөнд ирэхдээ mori хайрцгийг хараахан үүсгээгүй байсан — агуулахын ажилтан байхгүй хайрцаг хайгаад олдохгүй гацсан хэрэг. 2-р мөр хэзээ ч биелэлгүй программ зогссон. Засвар: хадгалах мөрөө дуудах мөрийн урд аваачна. Дүрэм: хайрцаг эхлээд төрж, дараа нь дуудагддаг.
Алдаа 2: Хадгалахдаа хашилтаа мартах. Бичвэр хадгалах гэж байгаад хашилтгүй бичвэл:
python
hool = Бууз
print(hool)Python:
NameError: name 'Бууз' is not definedМөн л NameError, гэхдээ энэ удаад гомдол нь баруун талын үгэнд байна: 'Бууз'. Юу болсон бэ гэвэл: хашилтгүй учраас Python "Бууз" гэдгийг string биш, харин өөр нэг variable-ийн нэр гэж ойлгоод — "Бууз нэртэй хайрцгийн доторхыг hool хайрцганд хуулж хий гэсэн юм байна" гэж уншаад — Бууз нэртэй хайрцаг хайгаад олоогүй хэрэг. (Тийм ээ, нэг хайрцагнаас нөгөө рүү утга хуулж болдог — энэ боломжтой хожим нөхөрлөнө.) Засвар: hool = "Бууз". Алдааны мэдэгдэлд аль үг дурдагдсаныг унших дадал энд тусална: гомдол зүүн талын нэрэнд үү, баруун талын утганд уу гэдгээс алдаагаа шууд олно.
Алдаа 3: = тэмдгийн хоёр талыг солих. Хадгалах мөрөө урвуугаар нь бичвэл:
python
"Бат" = nerPython:
SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?Орчуулбал: "SyntaxError: энд шууд утга руу хадгалж болохгүй. Магадгүй та '=' биш '==' гэх гэсэн юм болов уу?" (Хоёр тэнцүүгийн тухай саналыг нь одоохондоо орхиж болно — тэр бол Бүлэг 6-гийн зочин.) Гол нь эхний хэсэг: Python "Бат" гэсэн string-ийг шошго болгож, ner-ийг дотор нь хийхийг оролдоод — string бол хайрцагны нэр байж чадахгүй тул дүрмийн алдаа өглөө. Хадгалах мөрийн байнгын дэг журам нь: зүүн талд шошго (нэр), баруун талд хайрцганд орох утга. "Нэр зүүнээ, юм нь баруунаа" гэж тогтоочихвол энэ алдаа дахин гарахгүй.
Variable бол мэдээллийг нэртэй хадгалаад, нэрээр нь дуудаж ашигладаг арга — шошготой хайрцаг юм.
ner = "Бат" гэдэг нь "баруун талын утгыг зүүн талын нэртэй хайрцганд хадгал" гэсэн заавар; = бол "тэнцүү" биш, хадгалах үйлдлийн тэмдэг.
Нэрийг хашилтгүй дуудахад Python нэрийг биш, хайрцган доторх утгыг гаргаж ирдэг; хашилттай бол ердийн бичвэрээ л хэвлэнэ.
Хадгалсан утгыг хэдэн ч удаа дуудаж, тооцоололд оруулж болно — утга нь дуудсанаар дуусдаггүй.
Хайрцаг эхлээд үүсч, дараа нь дуудагдана — тиймээс хадгалах мөр дуудах мөрөөс дээр байрладаг.
Дараагийн хичээлд бид хайрцагныхаа шошгон дээр юу бичиж болох, болохгүйг үзнэ: variable-д нэр өгөх Python-ы дүрмүүд, мөн сайн нэр гэж ямар нэрийг хэлдэг тухай. Таны ner, nas, hool гэсэн нэрс яагаад ажиллаад, зарим нэрс яагаад алдаа өгдгийг тэнд бүрэн тайлна.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.