Мөр ба байт

Мөрийн талаар тодорхой ойлголттой болсон тул Өгөгдлийн төрлүүд хичээлд үзээгүй 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 аргад кодчлолын хүснэгтийг заавал дамжуулах ёстой.

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

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

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

Санамж: Програмчлалын хэлийг эзэмшихэд таниас нилээдгүй хүчин чармайлтыг шаардана. Сайтын хичээлүүд нь гарааны буюу үндсэн суурийг нэг дороос цаг алдалгүй судлах, нэмэлт зүйлүүдийг өөрсдөө бие даан сурахад туслах зорилготой. Аливаа зүйлийг сурахын тулд аль болохоор эрт, цаг алдалгүй, идэвхитэй оролдох хэрэгтэй.

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

Өмнөх хичээлүүдэд бид Python -ий өөрийнх нь буюу интерпретаторт багтсан обьект, арга, функцуудийг ашигласан. Гэхдээ бодит практикт хязгааргүй олон тооны асуудлууд байдгийг програмчлалын хэлүүд өөрийн суурь бүтэцдээ багтаах боломжгүй гэдэг нь ойлгомжтой. Python -нд эдгээр олон асуудлуудыг шийдсэн маш олон тооны сангууд байдагийг ашиглах боломжтой.

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

Програмийн боловсруулалтыг мөр төрлийн хувьсагчгүйгээр төсөөлөхийн аргагүй. Python -ий өгөгдлийн төрлүүд бүгд обьектууд гэдгийг сануулъя.

Мөрийг үүсгэх

Мөрийг дан эсхүл давхар хашилтыг ашиглан хоёр янзаар

зарлаж болно. Мөрийг зарлаж байгаа энэ аргуудад зарчмын ялгаа байхгүй. Гэхдээ мөр өөртөө жишээ нь I'm programmer, Bat is a "beginner" programmer гэх мэтээр дан, давхар хашилтыг агуулж болно.

  Нээгдсэн тоо: 924 Бүртгүүлэх

Мөрийн хэвжүүлэлт бол тусдаа сэдэв. Мөрүүдийг нийлүүлэн ажиллах боломжтой хэдий ч мөр агуулсан том хэмжээний массивтай ажиллахад ийм арга маш эвгүй. Функц, хувьсагчуудтай ажиллаж эхлэх үедээ та мөрүүдийг хэвжүүлэх тусгай механизм байх хэрэгтэйг ойлгох болно. Мөрийг хэвжүүлэх энгийн зарчим бол мөр дотор placeholder буюу орлуулагчийг тодорхойлох юм. Жишээ нь

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

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

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

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

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

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

Тэгш өнцөгт параллелепипедын диагнал түүний 3 ба 4 хэмжээтэй талстад 60 градусын өнцгөөр налсан бол диагоналын урт хэд вэ?

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

 

Суурийн радиус нь 4 см байх шулуун дугуй цилиндрийн нэг үзүүрээс зурагт үзүүлснээр хавтгайгаар огтлоход хамгийн урт байгуулагч нь 15 см, хамгийн богино байгуулагч нь 9 см болсон бол үүссэн биетийн эзэлхүүнийг ол.

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

 

тэнцэтгэл бишийг бод.

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