Мөр ба байт

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

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

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

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

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

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

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

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

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

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

while цикл for циклтэй их төстэй тул түүнийг for циклээр орлуулж болох ч зарим тохиолдолд while цикл энгийн болоод хураангуй кодийг өгдөг. while циклийн ажиллагааг

жишээнүүдээр тайлбарлая.

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

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

олон гишүүнтийг үржигдхүүн болгон задал.

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

 

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

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

 

Тоног төхөөрөмжийн сайжруулалтын үр дүнд ажилчны хөдөлмөрийн бүтээмж жилд хоёр удаа нэг ижил хувиар дээшилжээ. Хэрвээ ажилчин нэг ижил хугацаанд өмнө нь 2500 х.н харин одоо 2809 х.н бутээгдхүүн хийдэг болсон бол хөдөлмөрийн бүтээмж өсөх бүрдээ хэдэн хувиар өссөн бэ?

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