Мөр ба байт

Мөрийн талаар тодорхой ойлголттой болсон тул Өгөгдлийн төрлүүд хичээлд үзээгүй Python -ий байт гэдэг төрлийн тухай авч үзье. Мөрүүд янз бүрийн тэмдэгтийн кодоор илэрхийлэгдэж болох талаар өмнө нь дурдаж байсан. Ямарч өгөгдлүүд компьютерт эцсийн дүндээ хоёртын системийн 0, 1 цифрүүдээр илэрхийлэгддэг. Иймээс мөрийг бүрдүүлдэг компьютерийн тэмдэгт бүрд кодийн системийн хүснэгтэд тоон кодийг олгосон байдаг. Кодийн хүснэгтүүд олон ч тодорхой стандартуудад хуваагддаг. Кодийн системүүд нэг тэмдэгтийг янз бүрийн уртаар буюу байтаар тодорхойлдог. Жишээ нь тэмдэгтийн ascii системийн хүснэгтэд тэмдэгтийг 7 битээр илэрхийлэх бөгөөд нийтдээ 128 тэмдэгтийг тодорхойлдог.

Өргөтгөсөн ascii системд 8 дахь нэмэлт битийг ашигласнаар /нэг тэмдэгтэд 1 байт/ 256 тэмдэгтийг тодорхойлдог. UTF-8, Unicode, UTF-16, UTF-32 гэх мэтийн системүүд бий. Эдгээрээс UTF-8 хамгийн өргөн ашиглагддаг кодчлолын хүснэгт. UTF-8 -д тэмдэгтүүдийг 1-4 байтаар тодорхойлдог. UTF-8 нь Unicode хүснэгтийн дэд хүснэгтэд ордог. Анхдагчаар Python3 бүх тэмдэгтүүдийг Unicode стандартаар кодлогддог тул мөртэй ажиллах ажиллагааг ихээхэн хөнгөвчилж өгсөн. Учир нь Unicode системийн хүснэгт бараг бүхий л тэмдэгтүүдийг илэрхийлж болдог. Хэрэглэгчийн компьютерийн кодчлолын хүснэгтүүд ялгаатай байж болох ч Windows орчны кирилл үсэгтэй хэрэглэгчдийн кодчлолын хүснэгтүүд бараг л UTF-8 байдаг. Ер нь програмийн кодод мөрүүдтэй ажиллаж байхдаа ихэнх тохиолдолд кодчлолын хүснэгтийг бараг анзаарахгүй. Таны мэдэж байх зүйл бол өгөгдлүүд ямар кодчлолын хүснэгтээр хадгалагдсанг мэдэн тэдгээртэй ажиллахдаа тохирох сиситемийг хэрэглэх юм.
Unicode тэмдэгтүүдийн хүснэгтийн сайтад хандан илүү дэлгэрэнгүй мэдээллийг авч болно.
Тэмдэгтийн хүснэгтүүдтэй ажиллахыг жишээгээр авч үзье. Jupyter Notebook орчинд доорх

командыг өгөөд Shift & Enter дарвал utf-8 гэсэн мөрийг авна. Энэ бол таны компьютер ямар тэмдэгтийн хүснэгтийг ашиглаж байгааг үзүүлсэн хэрэг. Систем ямар тэмдэгтийн хүснэгтийг ашиглаж байгааг мэдэхийн тулд import sys командаар sys санг импортлоод түүний getdefaultencoding функцийг дуудсан. Сан импортлох талаар тусдаа хичээлээр үзэх тул одоо дээрх жишээг дагаад явахад болно. utf-8 бол Unicode тэмдэгтүүдийн 8 бит хэлбэрийн тэмдэглэгээ юм. 128 -аас доош кодтой тэмдэгтүүд 1 байтаар тодорхойлогдоно. 128 -аас доош кодтой тэмдэгтүүд Unicode системд ascii системтэй ижил. Харин 128 - аас дээш кодтой тэмдэгтүүд кодын хэмжээнээсээ хамааран 2, 3, 4  байтаар кодлогдоно. Тэмдэгтүүдийн хүснэгтийн кодчлол нилээд нарийн тул Python -ий хичээлд түүнийг гүнзгийрүүлэн судлаад байх шаардлагагүй. Тэмдэгтийн кодийг авахдаа ord харин тэмдэгтийг кодоор нь гаргахдаа chr функцуудийг ашиглахыг

дээрх жишээгээр харууллаа. Жишээ нь латин a үсэг 97 кодтой. 97 кодоор a үсгийг авч болохыг харуулсаан. Тэмдэгт бүр өөрийн кодтой тул A үсэг өөр кодтой гэдгийг санаарай. Хэрвээ chr(202) гэвэл түүнд тохирох тэмдэгтийг харуулах жишээний. Unicode систем тэмдэгтийн код 1-4 байтаар тодорхойлогдох тул маш олон тооны тэмдэгтүүдийг агуулна.
Хичээлийн зорилго бол мөрийг тэмдэгтэн хэлбэрээс байт хэлбэрт, байт хэлбэрийн мөрийг тэмдэгтэнд хэлбэрт шилжүүлэх аргуудыг ойлгох. Энд л тэмдэгтийн кодийн системийг ашигладаг. Одоо тодорхой жишээг харцгаая.

Жишээнд s = "hello" мөрийг түүний encode аргаар байтад /row bytes гэж нэрлэдэг/ хөрвүүлэн хувьсагчид хадгалсан. encode аргад кодлолын хүснэгтийг нэрийг дамжуулах ёстой. Мөрийг байтад шилжүүлээд хувьсагчдын төрлийг аль нэг хувьсагчийн төрлийг үзүүлэн шалгавал bytes гэдгийг үзүүлнэ. Хувьсагчдыг print камандаар харуулбал мөрийн байтад шилжсэн хэлбэрийг үзүүлнэ. Жишээ нь b'hello'. Мөрийн өмнөх b нь мөр байт төрлийнх гэдгийг заана. 3-р нүдэнд "hello" мөрийн байтын хэлбэр хэчнээн байт урттайг харуулах команд юм. Үр дүнгээс ascii, utf8 -д тэмдэгт бүрийг 1 байтаар харин utf16"hello" мөрийг 12 байтад хадгалсан байгаа нь харагдана. Ер нь utf16 -д тэмдэгтийг 2 байтад хадгалдаг ч энд яагаад 12 байт хадгалсан учрыг тэмдэгтийн хүснэгтийн талаар судлан өөрөө тогтоогоорой.
Python -д кодчлолын хүснэгт өгөгдлийг сүлжээгээр эсхүл файлаар гэх мэтээр дамжуулах үед л чухал байдаг. Өгөгдөл компьютерийн санах ойд байхад Python өгөгдлийг Unicode тэмдэгтүүдийн дараалал гэж үздэг тул encoding буюу кодчлол ойлголт ер нь байхгүй гэсэнтэй ижил.
Мөрийг байт хэлбэрт шилжүүлэх жишээнүүдийг

харцгаая. 1-р нүдний эхний командаар hello мөрийг байт хэлбэрт шилжүүлэхдээ b угтварыг тавиад мөрийг өгнө. Ингэснээр str_in_bytes хувьсагчид hello мөр байт хэлбэрээр хадгалагдана. Хоёрдахь команд str_in_text хувьсагчид hello мөрийг олгож байгаа. Энэ нь хувьсагчдын төрлийг үзүүлэх print командаар батлагдана. Үүнээс гадна мөрөөс encode аргыг шууд дуудсан ч болно. 2 -р нүдний жишээ. Кирил эсхүл ханз гэх мэт үсэгтэй мөрийг ч байтад хөрвүүлж болно. Мөрийн байт хэлбэрт индексээр нь хандах боломжтойг 3-р нүдний эхний жишээ харуулна. Хоёрдахь жишээг бид өмнөх хичээлээс мэднэ. str_in_bytes хувьсагчид мөр байтаар хадгалагдаж байгаа тул мөрийн 0 индекст h -ийн тэмдэгтийн хүснэгтийн код агуулагдана.

Зурагт үзүүлсэн кодийг авч үзье. byte төрөл str төрлийн адилаар өөрчлөлт авдаггүй гэдгийг ойлгох нь чухал. Жишээ нь 1-р нүдний жишээнд str_in_bytes хувьсагчид hello мөрийг байтаар хадгалаад түүний 0 индекстэй байтыг өөрчлөх гэвэл алдаа өгнө. Энэ бол byte төрөл өөрчлөлт авдаггүйг батлана. Хэрвээ өөрчлөгддөг byte төрөл хэрэгтэй бол Python -ий bytearray функцийг ашиглан өөрчлөх боломжтой байт төрлийг үүсгэж болно. 2-р нүдний жишээнд ba хувьсагчид hello мөрийг байтаар олгоод түүнийг индексээр нь өөрчилж байгаа жишээг харууллаа. Ямарч тохиолдолд байтыг str -ийн байгуулагчийг ашиглан мөр рүү буцаан хөрвүүлэх хэрэггүй. Хөрвүүлэхдээ хүрвэл кодчлолын хүснэгтийг заавал заах хэрэгтэйг 3, 4 -р нүдний жишээнүүд харуулна. 3-р нүдний result=str(str_in_bytes) командаар байт төрлийн хувьсагчийг мөр төрөлд хөрвүүлэн hello утгыг авах ёстой мэт. Гэтэл дараагийн хоёр print командын үр дүн b'hello' , 8 гэсэн утгыг өгсөн байгаа. Учир нь str -ийн байгуулагч түүнд дамжуулсан байт төрлийн str_in_bytes хувьсагчийн утгыг шууд мөр төрлийнх болгосон учраас b'hello' , 8 гэсэн утгуудыг буцааж байгаа юм. 8 бол result мөрийн урт. str -ийн байгуулагчаас зөв хэлбэрийн мөрийг авахын тулд 4-р нүдний жишээ шиг байт төрөл ямар кодчлолын хүснэгтийг ашиглаж байгааг заах хэрэгтэй. Манай тохиолдолд utf8. Кодчлолын хүснэгтүүд өөр хоорондоо бүгд тохироод байдаггүй тул хөрвүүлэлтэд нэг ижил кодчлолын хүснэгтийг ашиглахыг зөвлөе. Хөрвүүлэлтэд decode аргыг ч шашиглах боломжтойг 5-р нүдний жишээнд харууллаа. Жишээ нь байт төрлийн str_in_bytes хувьсагчийн decode аргад кодчлолын хүснэгтийн нэрийг дамжуулан дуудвал байтыг мөр рүү зөв хөрвүүлнэ. decode аргад кодчлолын хүснэгтийг заавал дамжуулах ёстой.

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 1843 Төлбөртэй

Хичээлээр Python -ий итерацичлагдах төрлүүдийн нэг болох set буюу олонлог төрлийн талаар авч үзье. Циклээр элементүүдэд нь хандаж болох зүйлийг итерацичлагдах гэж ойлгоход болно. Олонлог төрөл математикийн олонлог ухагдхууныг илэрхийлэх тул түүнийг тусгай төрөл гэж үзэх үндэслэлтэй. set төрөл зөвхөн давтагдашгүй элементүүдийг агуулахын дээр олонлогуудад математикийн үйлдлүүдийг хийхэд зориулагдсан. Суралцах хамгийн сайн арга практик байдаг тул set төрөлтэй хэрхэн ажиллахыг жишээнээс харцгаая.

  Нээгдсэн тоо: 334 Төлбөртэй

Python -нд модулаас гадна пакетийг үүсгэж болно. Энгийнээр бол модул гэдэг нь .py өргөтгөлтэй файлд хадгалсан бусад .py өргөтгөлтэй файлын код ашиглаж болох скрипт. Пакет бол модулуудийг логикийн талаас нь нэгтгэсэн нэгдэл. Текст засварлагчид үүсгэсэн кодоо .py өргөтгөлтэй файлаар хадгалахад л модул үүсдэг бол пакетийг үүнээс арай өөрөөр үүсгэдэгийг хичээлээр авч үзье.

  Нээгдсэн тоо: 318 Төлбөртэй

Хичээлээр олон удамшилтын онцгой төрөл болох миксиний талаар авч үзнэ. Миксинд дүрмийн ямар нэгэн өөр бичилт байхгүй ч утгын талаасаа онцгой учиртай. Хамгийн гол онцлог нь миксинийг тодорхой классуудын шатлалын суурь класс байдлаар зохиодоггүйд оршино. Өөрөөр хэлбэл тэдгээрийг дурын класстай хольж болдог. Үүнийг машин классийн жишээгээр авч үзье.

  Нээгдсэн тоо: 610 Нийтийн

Декораторийн суурь ойлголтод бас нэгэн чухал зүйлийг ойлгох хэрэгтэйг Декораторууд хичээлд үүсгэсэн

log_decorator -ийн жишээн дээр харцгаая.

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 64

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 93

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 99

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 121

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 124

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 176

 

Хуваах нь нэг тоо нөгөө тоонд хэдэн удаа агуулагдаж буй тодорхойлох арифметикийн үйлдэл.
Хуваалтыг нэг бус удаа…

Нээгдсэн тоо : 117

 

Зуучлагч (Mediator) нь олон тооны обьектууд бие биетэйгээ холбоос үүсгэхгүйгээр харилцан ажиллах боломжийг хангах загварчлалын хэв юм. Ингэснээр…

Нээгдсэн тоо : 113

 

Делегатууд хичээлд ухагдхууны талаар дэлгэрэнгүй үзсэн ч жишээнүүд делегатийн хүчийг бүрэн харуулж чадахааргүй байсан.…

Нээгдсэн тоо : 122

 
Энэ долоо хоногт

Адил хажуут трапецын сууриуд 20 ба 12 см. Трапецыг багтаасан тойргийн төв их суурь дээр байрлах бол трапецын диагналыг ол.

Нээгдсэн тоо : 1166

 

тэгшитгэлийн язгууруудын нийлбэрийг ол.

Нээгдсэн тоо : 1088

 

Зурагт үзүүлсэн хагас тойрогт бол AB -ийн уртыг ол.

Нээгдсэн тоо : 839