Oziqlanish ta'rifi. Pythonda dasturlashga kirish. Yuqori darajadagi umumiy maqsadli til

Oziqlanish ta'rifi.  Pythonda dasturlashga kirish.  Yuqori darajadagi umumiy maqsadli til
Oziqlanish ta'rifi. Pythonda dasturlashga kirish. Yuqori darajadagi umumiy maqsadli til

Python- kuchli va o'rganish oson dasturlash tili. Bu qulay yuqori darajadagi ma'lumotlar tuzilmalarini taqdim etadi va oddiy, lekin samarali yondashuv ob'ektga yo'naltirilgan dasturlash uchun. Python talqin qilingan til. Yozma dasturlarni ishga tushirish uchun sizda CPython tarjimoni bo'lishi kerak. Python tarjimoni va katta standart kutubxona rasmiy veb-saytdagi barcha asosiy platformalar uchun manba va ikkilik fayllar sifatida bepul mavjud. Python http://www.python.org va cheklovlarsiz qayta tarqatilishi mumkin. Bundan tashqari, saytda ko'plab uchinchi tomon modullariga tarqatish va havolalar va batafsil hujjatlar mavjud.
Til aniq va izchil sintaksisga, o'ylangan modullilikka va miqyosga ega, buning natijasida manba kodi yozilgan. Python dasturlarni o'qish oson. Til ishlab chiquvchilari Python"Python Zeni" deb nomlangan ma'lum bir dasturlash falsafasiga rioya qiling. Uning matni ushbu import buyrug'i yordamida tarjimon tomonidan chiqariladi:

>>> ushbu Python zenini import qiling, Tim Peters Chiroyli xunukdan yaxshiroqdir. Yopiqdan ko'ra ochiq-oydin. Oddiylik murakkabdan yaxshiroqdir. Murakkablik murakkabdan yaxshiroqdir. Yassi o'rnatilgandan yaxshiroqdir. Siyrak zichroqdan yaxshiroqdir. O'qish qobiliyati hisobga olinadi. Maxsus holatlar qoidalarni buzish uchun etarli emas. - buni qilishning aniq usuli, garchi siz golland bo'lmasangiz, bu usul birinchi navbatda aniq bo'lmasligi mumkin. Hozir hech qachondan yaxshiroq. Garchi hech qachon * hozir * dan yaxshiroq bo'lmasa ham. Agar amalga oshirishni tushuntirish qiyin bo'lsa, bu yomon g'oya. Agar amalga oshirishni tushuntirish oson bo'lsa, bu yaxshi g'oya bo'lishi mumkin. Ismlar maydoni - bu ajoyib g'oya -- keling, ulardan ko'proq narsani qilaylik!

Tarjima qilinganda u shunday eshitiladi:

  • Xunukdan go'zal yaxshiroq.
  • Yopiqdan ko'ra ochiq-oydin.
  • Oddiylik murakkabdan yaxshiroqdir.
  • Murakkablik chalkashlikdan yaxshiroqdir.
  • Yassi o'rnatilgandan yaxshiroqdir.
  • Siyrak zichroqdan yaxshiroqdir.
  • O'qish qobiliyati muhim.
  • Maxsus holatlar qoidalarni buzish uchun etarlicha maxsus emas.
  • Shu bilan birga, mukammallikdan ko'ra amaliylik muhimroqdir.
  • Xatolarni hech qachon yashirmaslik kerak.
  • Agar ular aniq jim bo'lmasa.
  • Noaniqlikka duch kelganingizda, taxmin qilish vasvasasiga qarshi turing.
  • Buni amalga oshirishning bitta va faqat bitta aniq usuli bo'lishi kerak.
  • Agar siz golland bo'lmasangiz, avvaliga bu aniq bo'lmasligi mumkin.
  • Hozir hech qachondan yaxshiroq.
  • Garchi hech qachon hozirgidan yaxshiroq emas.
  • Agar amalga oshirishni tushuntirish qiyin bo'lsa, g'oya yomon.
  • Agar amalga oshirishni tushuntirish oson bo'lsa, g'oya yaxshi bo'lishi mumkin.
  • Ismlar maydoni - bu ajoyib narsa! Biz ularni ko'proq qilamiz!

Python faol rivojlanayotgan dasturlash tili bo'lib, yangi versiyalari taxminan har ikki yarim yilda bir marta chiqariladi. Shu va boshqa sabablarga ko'ra, Python ANSI, ISO yoki boshqa rasmiy standartlar mavjud emas;

Tilning yaratilish tarixi

Rivojlanish Python tili 1980-yillarning oxirida Gollandiya CWI instituti xodimi tomonidan boshlangan. Amoeba tarqatilgan OS kengaytiriladigan skript tilini talab qildi, buning uchun Guido van Rossum Python-ni yaratdi. Yangi til dasturlashni o'rgatishga qaratilgan ABC tilidan ba'zi ishlanmalarni oldi. 1991 yil fevral oyida Guido alt.sources yangiliklar guruhida manba matnini nashr etdi. Tilning nomi sudralib yuruvchilar turidan kelib chiqmaydi. Muallif bu tilni 1970-yillardagi mashhur Britaniya komediya teleko‘rsatuvi Monty Pythonning Flying Circus sharafiga nomlagan. Biroq, tilning timsoli ilon boshlari bilan ifodalangan. Keng ko'lamli testlardan so'ng Python 3.0 ning birinchi versiyasi chiqdi. Bugungi kunda rivojlanishning ikkala tarmog'i ham qo'llab-quvvatlanadi (Python 3.x va 2.x).

Python ko'pgina dasturlash tillari ta'sirida yaratilgan: Modula-3, C, C++, Smalltalk, Lisp, Fortran, Java, Miranda, Icon. Python juda o'ziga xos sintaksisga ega bo'lsa-da, tilning dizayn tamoyillaridan biri eng kam ajablanish tamoyilidir.

Standart kutubxona

Boy standart kutubxona Pythonning diqqatga sazovor joylaridan biridir. Ko'pgina tarmoq protokollari va Internet formatlari bilan ishlash uchun vositalar mavjud. Muntazam ifodalar, matn kodlari, multimedia formatlari, kriptografik protokollar va arxivlar bilan ishlash uchun modullar mavjud. Standart kutubxonaga qo'shimcha ravishda, turli platformalardagi barcha tizim qo'ng'iroqlari uchun interfeysni ta'minlaydigan ko'plab kutubxonalar mavjud.
Python uchun DB-API 2 ma'lumotlar bazasini dasturlash interfeysi spetsifikatsiyasi qabul qilingan va ushbu spetsifikatsiyaga mos keladigan paketlar turli ma'lumotlar bazasiga kirish uchun ishlab chiqilgan: Oracle, MySQL, PostgreSQL, Sybase, Firebird (Interbase), Informix, Microsoft SQL Server va SQLite .
Ko'p o'lchovli massivlar bilan ishlash uchun NumPy kutubxonasi ixtisoslashtirilgan paketlar bilan taqqoslanadigan ilmiy hisoblash ko'rsatkichlariga erishish imkonini beradi. SciPy NumPy-dan foydalanadi va matematik algoritmlarning keng doirasiga kirish imkonini beradi. Numarray katta hajmdagi ilmiy ma'lumotlar bilan operatsiyalar uchun maxsus mo'ljallangan.
Python o'z modullaringizni C va C++ tillarida yozish uchun oddiy va qulay C API taqdim etadi. SWIG kabi vosita sizga Python kodida C/C++ kutubxonalaridan foydalanish uchun ulanishlarni deyarli avtomatik ravishda olish imkonini beradi. Standart kutubxona vositasi ctypes Python dasturlariga C tilida yozilgan dinamik kutubxonalarga bevosita kirish imkonini beradi. C/C++ kodini to'g'ridan-to'g'ri Python manba fayllariga joylashtirish imkonini beruvchi modullar mavjud bo'lib, tezda kengaytmalarni yaratadi.
Python va u uchun kutubxonalarning aksariyati bepul va manba kodida taqdim etilgan. Bundan tashqari, ko'pgina ochiq kodli tizimlardan farqli o'laroq, litsenziya hech qanday tarzda Python-dan tijorat rivojlanishida foydalanishni cheklamaydi va mualliflik huquqini ko'rsatishdan tashqari hech qanday majburiyatlarni yuklamaydi.

Qo'llash sohalari

Python barqaror va keng tarqalgan tildir. U ko'plab loyihalarda va turli imkoniyatlarda qo'llaniladi: asosiy dasturlash tili sifatida yoki kengaytmalar va ilovalar integratsiyasini yaratish uchun. Python-da ko'plab loyihalar amalga oshirildi va u kelajakdagi dasturlar uchun prototiplarni yaratishda faol foydalanilmoqda. Python ko'plab yirik kompaniyalar tomonidan qo'llaniladi.
NumPy, SciPy va MatPlotLib paketlariga ega Python ilmiy hisob-kitoblar uchun universal muhit sifatida Matlab, IDL va boshqalarning umumiy ixtisoslashgan tijorat paketlarini almashtirish sifatida faol foydalaniladi.
Houdini va Nuke kabi professional 3D grafik dasturlari kengaytirish uchun Python-dan foydalanadi standart xususiyatlar dasturlari.

Manbalar

Taqdimotlar

Uy vazifasi

Xabarlarni tayyorlang:

  • Python olimlar uchun vosita sifatida
  • Python va Ruby (taqqoslash)
  • Python va WEB
  • Python va grafik kutubxonalar (wxPython, PyQt, PyGTK va boshqalar) yordamida oynali ilovalar yaratish.

Bir vaqtlar yopiq forumda men Python tilini o'rgatmoqchi bo'lganman. Umuman olganda, u erda ishlar to'xtab qoldi. Yozilgan darslarga achindim va ularni keng ommaga e'lon qilishga qaror qildim. Hozirgacha eng birinchi, eng oddiy. Keyinchalik nima sodir bo'lishi qiziqroq, lekin bu qiziq bo'lmasligi mumkin. Umuman olganda, bu post sinov baloni bo'ladi, agar sizga yoqsa, davom ettiraman.

Yangi boshlanuvchilar uchun Python. Birinchi bob. "Biz nima haqida gapiryapmiz"

Har holda, biroz zerikarli "xushxabar". Agar siz undan charchagan bo'lsangiz, bir nechta paragraflarni o'tkazib yuborishingiz mumkin.
Python ("python" emas, "Python" deb talaffuz qilinadi) - bu Gvido van Rossum tomonidan ishlab chiqilgan skript tili. oddiy til, yangi boshlanuvchilar uchun o'rganish oson.
Hozirgi kunda Python ko'p sohalarda qo'llaniladigan keng tarqalgan tildir:
- amaliy dasturlarni ishlab chiqish (masalan, yum, pirut, system-config-*, Gajim IM mijozi va boshqalar)
- Veb-ilovalarni ishlab chiqish (eng kuchli Zope dastur serveri va uning asosida CMS Plone ishlab chiqilgan, masalan, Markaziy razvedka boshqarmasi veb-sayti ishlaydi va Plones, Django, TurboGears va boshqalarni tezkor ishlab chiqish uchun ko'plab ramkalar)
- Ko'p o'yinlarda o'rnatilgan skript tili sifatida foydalaning va nafaqat (OpenOffice.org ofis to'plamida, Blender 3d muharririda, Postgre DBMSda)
- Ilmiy hisob-kitoblarda foydalanish (hisoblash uchun SciPy va numPy paketlari va grafiklarni chizish uchun PyPlot bilan Python MatLab kabi paketlar bilan deyarli taqqoslanadigan bo'ladi)

Va bu, albatta, uzoqdir to'liq ro'yxat bu ajoyib til yordamida loyihalar.

1. Tarjimonning o'zi, uni bu yerdan olishingiz mumkin (http://python.org/download/).
2. Rivojlanish muhiti. Buni boshlash shart emas va tarqatishga kiritilgan IDLE yangi boshlanuvchilar uchun mos keladi, ammo jiddiy loyihalar uchun sizga jiddiyroq narsa kerak bo'ladi.
Windows uchun men ajoyib engil PyScripter (http://tinyurl.com/5jc63t) dan foydalanaman, Linux uchun men Komodo IDE dan foydalanaman.

Birinchi dars uchun faqat Python interaktiv qobig'ining o'zi etarli bo'ladi.

Faqat python.exe faylini ishga tushiring. Kirish soʻrovi koʻp vaqt talab qilmaydi, u quyidagicha koʻrinadi:

Shuningdek, siz o'zingiz yoqtirgan py kengaytmali fayllarga dasturlar yozishingiz mumkin matn muharriri, bu matnga o'z belgilash belgilarini qo'shmaydi (hech qanday Word ishlamaydi). Shuningdek, ushbu muharrir bo'sh joylarni yorliqlar bilan almashtirmaslik uchun "aqlli yorliqlar" qila olishi ma'qul.
Fayllarni bajarish uchun ishga tushirish uchun siz ularni ikki marta bosishingiz mumkin. Agar konsol oynasi juda tez yopilsa, dastur oxirida quyidagi qatorni kiriting:

Keyin tarjimon dastur oxirida enter tugmasini bosishingizni kutadi.

Yoki Fardagi py fayllarini Python bilan bog'lang va Enter tugmasini bosib oching.

Va nihoyat, siz Python uchun nosozliklarni tuzatish, sintaksisni ajratib ko'rsatish va boshqa ko'plab "qulayliklar" ni ta'minlaydigan ko'plab qulay IDElardan birini ishlatishingiz mumkin.

Bir oz nazariya.

Boshlash uchun, Python kuchli dinamik tarzda yozilgan tildir. Bu nimani anglatadi?

Kuchli terishga ega (paskal, java, c va boshqalar) tillar mavjud bo'lib, ularda o'zgaruvchining turi oldindan aniqlanadi va uni o'zgartirib bo'lmaydi, dinamik terishli tillar ham bor (python, ruby, vb. ), bunda o'zgaruvchining turi tayinlangan qiymatga qarab izohlanadi.
Dinamik tarzda yozilgan tillarni yana 2 turga bo'lish mumkin. Yashirin turdagi konvertatsiya qilishga ruxsat bermaydigan qat'iy (Python) va yashirin turdagi konvertatsiyalarni amalga oshiradigan bo'sh turlar (masalan, VB, unda siz "123" qatorini va 456 raqamini osongina qo'shishingiz mumkin).
Python tasnifi bilan shug'ullangandan so'ng, keling, tarjimon bilan biroz "o'ynashga" harakat qilaylik.

>>> a = b = 1 >>> a, b (1, 1) >>> b = 2 >>> a, b (1, 2) >>> a, b = b, a >>> a , b (2, 1)

Shunday qilib, topshiriq = belgisi yordamida amalga oshirilganligini ko'ramiz. Bir vaqtning o'zida bir nechta o'zgaruvchilarga qiymat belgilashingiz mumkin. Interaktiv ravishda tarjimonga o'zgaruvchi nomini ko'rsatsangiz, u o'z qiymatini chop etadi.

Siz bilishingiz kerak bo'lgan keyingi narsa - asosiy algoritmik birliklar - filiallar va halqalar qanday tuzilgan. Boshlash uchun ozgina yordam kerak. Python-da kod bloklari uchun maxsus ajratuvchi yo'q, chekinish ularning rolini bajaradi. Ya'ni, bir xil chekinish bilan yozilgan narsa bitta buyruq bloki. Avvaliga bu g'alati tuyulishi mumkin, ammo biroz ko'nikkandan so'ng, siz ushbu "majburiy" chora sizga juda o'qilishi mumkin bo'lgan kodni olishga imkon berishini tushunasiz.
Shunday qilib, shartlar.

Shart “:” bilan tugaydigan if iborasi yordamida aniqlanadi. Agar birinchi tekshirish muvaffaqiyatsiz bo'lsa, bajariladigan muqobil shartlar elif operatori tomonidan belgilanadi. Nihoyat, else shartlardan hech biri mos kelmasa, bajariladigan filialni belgilaydi.
Esda tutingki, if yozgandan so'ng tarjimon keyingi kiritishni kutayotganini bildirish uchun "..." so'rovidan foydalanadi. Unga biz tugatganimizni aytish uchun bo'sh qatorga kirishimiz kerak.

(Shoxlar bilan misol negadir, oldingi va kod teglari bilan raqslarga qaramay, markazdagi belgini buzadi. Noqulaylik uchun uzr, men uni shu yerga tashladim pastebin.com/f66af97ba, agar kimdir menga nima bo'lganini aytsa, men juda minnatdor bo'ling)

Velosipedlar.

Loopning eng oddiy holi while siklidir. U parametr sifatida shartni oladi va u to'g'ri bo'lsa, bajariladi.
Bu yerga kichik misol.

>>> x = 0 >>> esa x<=10: ... print x ... x += 1 ... 0 1 2 ........... 10

Shuni yodda tutingki, x va x+=1 chop etish bir xil chekinish bilan yozilganligi sababli, ular tsiklning asosiy qismi hisoblanadi (bloklar haqida aytganlarimni eslaysizmi? ;-)).

Python-dagi siklning ikkinchi turi for tsiklidir. Bu boshqa tillardagi foreach tsikliga o'xshaydi. Uning sintaksisi taxminan quyidagicha.

Ro'yxatdagi o'zgaruvchi uchun:
jamoalar

Ro'yxatdagi barcha qiymatlar o'z navbatida o'zgaruvchiga tayinlanadi (aslida nafaqat ro'yxat, balki boshqa har qanday iterator ham bo'lishi mumkin, ammo hozircha bu haqda tashvishlanmaylik).

Mana oddiy misol. Ro'yxat satr bo'ladi, bu belgilar ro'yxatidan boshqa narsa emas.

>>> x = "Salom, Python!" >>> x dagi char uchun: ... charni chop etish ... H e l ............ !

Shu tarzda biz satrni belgilarga ajratishimiz mumkin.
Agar bizga ma'lum bir necha marta takrorlanadigan halqa kerak bo'lsa, nima qilishimiz kerak? Bu juda oddiy, diapazon funktsiyasi yordamga keladi.

Kirishda u birdan uchtagacha parametrlarni oladi, chiqishda biz for operatori bilan "o'tishimiz" mumkin bo'lgan raqamlar ro'yxatini qaytaradi.

Bu erda diapazon funktsiyasidan foydalanishning ba'zi misollari, uning parametrlarining rolini tushuntiradi.

>>> diapazon(10) >>> diapazon(2, 12) >>> diapazon(2, 12, 3) >>> diapazon(12, 2, -2)

Va pastadir bilan kichik bir misol.

>>> (10) diapazonidagi x uchun: ... chop x ... 0 1 2 ..... 9

Kirish Chiqish

Python-dan to'liq foydalanishni boshlashdan oldin bilishingiz kerak bo'lgan oxirgi narsa - unda kiritish-chiqarish qanday amalga oshirilganligi.

Chiqarish uchun chop etish buyrug'i ishlatiladi, bu uning barcha argumentlarini odam o'qiy oladigan shaklda chop etadi.

Konsol kiritish uchun raw_input(prompt) funksiyasidan foydalaniladi, bu soʻrovni koʻrsatadi va foydalanuvchi kiritishini kutadi va foydalanuvchi kiritgan narsani oʻz qiymati sifatida qaytaradi.

X = int(raw_input("Raqamni kiriting:")) chop etish "Bu raqamning kvadrati ", x * x

Diqqat! Shunga o'xshash harakatga ega input() funksiyasi mavjudligiga qaramay, uni dasturlarda ishlatish tavsiya etilmaydi, chunki tarjimon uning yordamida kiritilgan sintaksis ifodalarini bajarishga harakat qiladi, bu dastur xavfsizligida jiddiy teshikdir.

Birinchi dars uchun shunday.

Uy vazifasi.

1. To‘g‘ri burchakli uchburchakning gipotenuzasini hisoblash dasturini tuzing. Oyoqlarning uzunligi foydalanuvchidan so'raladi.
2. Ildizlarni topish dasturini tuzing kvadrat tenglama umuman. Koeffitsientlar foydalanuvchidan so'raladi.
3. M soniga ko'paytirish jadvalini ko'rsatish dasturini tuzing. Jadval M * a dan M * b gacha tuziladi, bu erda M, a, b foydalanuvchidan so'raladi. Chiqish ustunda, har bir satrda bitta misolda amalga oshirilishi kerak quyidagi shakl(Masalan):
5 x 4 = 20
5 x 5 = 25
Va hokazo.

Kirish


Hozirgi vaqtda shaxsiy hisoblash texnologiyasining jadal rivojlanishi tufayli dasturlash tillariga qo'yiladigan talablar asta-sekin o'zgarib bormoqda. Tarjimon tillar tobora muhim rol o'ynay boshladi, chunki shaxsiy kompyuterlarning kuchayishi talqin qilinadigan dasturlarning bajarilishi uchun etarli tezlikni ta'minlay boshlaydi. Va kompilyatsiya qilingan dasturlash tillarining yagona muhim afzalligi ular ishlab chiqaradigan yuqori tezlikdagi koddir. Dasturni bajarish tezligi kritik qiymat bo'lmasa, eng ko'p to'g'ri tanlov talqin qilingan til bo'ladi, oddiyroq va moslashuvchan vosita dasturlash.

Shu munosabat bilan, 90-yillarning boshlarida uning muallifi Guido van Rossum tomonidan yaratilgan nisbatan yangi Python (Python) dasturlash tilini ko'rib chiqish ma'lum qiziqish uyg'otadi.

Python haqida umumiy ma'lumot. Afzalliklari va kamchiliklari


Python - talqin qilinadigan, mahalliy ob'ektga yo'naltirilgan dasturlash tili. Bu juda sodda va oz sonli kalit so'zlarni o'z ichiga oladi, lekin ayni paytda juda moslashuvchan va ifodali. Bu Paskal, C++ va, albatta, C dan yuqori darajadagi til bo'lib, bunga asosan o'rnatilgan yuqori darajadagi ma'lumotlar tuzilmalari (ro'yxatlar, lug'atlar, kortejlar) orqali erishiladi.

Tilning afzalliklari.
Shubhasiz afzallik shundaki, Python tarjimoni deyarli barcha platformalarda va operatsion tizimlar. Birinchi bunday til C tili edi, lekin uning turli xil mashinalardagi ma'lumotlar turlari har xil hajmdagi xotirani egallashi mumkin edi va bu haqiqatan ham portativ dasturni yozishga qandaydir to'siq bo'lib xizmat qildi. Pythonda bu kamchilik yo'q.

Keyingi muhim xususiyat - bu tilning kengayishiga katta ahamiyat beriladi va muallifning o'zi yozganidek, til aniq kengaytirilgan deb o'ylangan; Bu shuni anglatadiki, barcha qiziqqan dasturchilar tilni yaxshilashlari mumkin. Tarjimon C tilida yozilgan va manba kodi har qanday manipulyatsiya uchun mavjud. Agar kerak bo'lsa, uni dasturingizga kiritishingiz va uni o'rnatilgan qobiq sifatida ishlatishingiz mumkin. Yoki Python-ga o'zingizning qo'shimchalaringizni C tilida yozish va dasturni kompilyatsiya qilish orqali siz yangi imkoniyatlarga ega "kengaytirilgan" tarjimonni olishingiz mumkin.

Keyingi afzallik - mavjudligi katta raqam turli xil ta'minlovchi dasturga ulangan modullar qo'shimcha funktsiyalar. Bunday modullar C va Python-ning o'zida yozilgan va barcha etarli malakali dasturchilar tomonidan ishlab chiqilishi mumkin. Misollar quyidagi modullarni o'z ichiga oladi:

  • Numerical Python - butun vektorlar va matritsalarni manipulyatsiya qilish kabi ilg'or matematik imkoniyatlar;
  • Tkinter - X-Windows da keng qo'llaniladigan Tk interfeysi asosida grafik foydalanuvchi interfeysi (GUI) yordamida ilovalar yaratish;
  • OpenGL - ikki va uch o'lchovli ob'ektlarni grafik modellashtirishning keng kutubxonasidan foydalanish Silicon Graphics Inc kompaniyasining Open Graphics Library. Ushbu standart, boshqa narsalar qatori, keng tarqalgan operatsion tizimlarda qo'llab-quvvatlanadi Microsoft Windows 95 OSR 2, 98 va Windows NT 4.0.
Tilning kamchiliklari.
Muallif tomonidan e'tirof etilgan yagona kamchilik - bu Python dasturining nisbatan past bajarilish tezligi, bu uning talqin qilinishi bilan bog'liq. Biroq, bizning fikrimizcha, bu ijro tezligi uchun juda muhim bo'lmagan dasturlarni yozishda tilning afzalliklari bilan qoplanadi.

Xususiyatlarga umumiy nuqtai


1. Python, ko'p tillardan (Paskal, C++, Java va boshqalar) farqli o'laroq, o'zgaruvchan deklaratsiyalarni talab qilmaydi. Ular ishga tushirilgan joyda yaratilgan, ya'ni. birinchi marta o'zgaruvchiga qiymat tayinlanganda. Bu o'zgaruvchining turi tayinlangan qiymat turiga qarab belgilanadi degan ma'noni anglatadi. Bu jihatdan Python Basic-ga o'xshaydi.
O'zgaruvchining turi o'zgarmas emas. Unga berilgan har qanday tayinlash to'g'ri va bu faqat o'zgaruvchining turi yangi tayinlangan qiymat turiga aylanishiga olib keladi.

2. Paskal, C, C++ kabi tillarda roʻyxatlarni tashkil qilish baʼzi qiyinchiliklarni keltirib chiqardi. Ularni amalga oshirish uchun ko'rsatkichlar va dinamik xotira bilan ishlash tamoyillarini chuqur o'rganish kerak edi. Va hatto yaxshi malakaga ega bo'lsa ham, dasturchi har safar ro'yxatlarni yaratish, ishlash va yo'q qilish mexanizmlarini qayta qo'llash orqali osonlikcha nozik xatolarga yo'l qo'yishi mumkin. Shularni hisobga olib, ro'yxatlar bilan ishlash uchun ba'zi vositalar yaratilgan. Masalan, Delphi Paskalda ro'yxatlarni amalga oshiradigan TList klassi mavjud; STL (Standart andozalar kutubxonasi) kutubxonasi C++ tili uchun ishlab chiqilgan boʻlib, unda vektorlar, roʻyxatlar, toʻplamlar, lugʻatlar, steklar va navbatlar kabi tuzilmalar mavjud. Biroq, bunday imkoniyatlar barcha tillarda va ularni amalga oshirishda mavjud emas.

Bittasi o'ziga xos xususiyatlar Python - bu tilning o'ziga o'rnatilgan bunday tuzilmalarning mavjudligi kortejlar(tubla) ro'yxatlar(ro'yxat) va lug'atlar(lug'at), ba'zan deyiladi kartalar(xarita). Keling, ularni batafsil ko'rib chiqaylik.

  1. Tuple . Bu ma'lum darajada massivni eslatadi: u elementlardan iborat va qat'iy belgilangan uzunlikka ega. Elementlar har qanday qiymatlar bo'lishi mumkin - oddiy konstantalar yoki ob'ektlar. Massivdan farqli o'laroq, kortejning elementlari bir hil bo'lishi shart emas. Va kortejni ro'yxatdan ajratib turadigan narsa shundaki, kortejni o'zgartirib bo'lmaydi, ya'ni. biz i-chi kortej elementiga yangi narsani belgilay olmaymiz va yangi elementlar qo'sha olmaymiz. Shunday qilib, kortejni doimiy ro'yxat deb atash mumkin. Sintaktik tarzda, kortej vergul bilan ajratilgan barcha elementlarni ro'yxatlash orqali aniqlanadi, ularning hammasi qavs ichiga olinadi:

  2. (1, 2, 5, 8)
    (3.14, “satr”, -4)
    Barcha elementlar noldan indekslanadi. i-elementni olish uchun kvadrat qavs ichida kortej nomini, keyin i indeksini ko'rsatish kerak. Misol:
    t = (0, 1, 2, 3, 4)
    chop etish t, t[-1], t[-3]
    Natija: 0 4 2
    Shunday qilib, agar uning elementlari doimo bir hil bo'lsa, kortejni doimiy vektor deb atash mumkin edi.
  3. Roʻyxat . Ro'yxatning yaxshi, shaxsiy misoli Turbo Paskal til satridir. Chiziqning elementlari bitta belgilar bo'lib, uning uzunligi aniqlanmagan, elementlarni o'chirish yoki aksincha, ularni qatorning istalgan joyiga kiritish mumkin. Ro'yxatning elementlari bir xil turdagi bo'lishi shart emas, balki ixtiyoriy ob'ektlar bo'lishi mumkin. Roʻyxatni yaratish uchun uning elementlarini vergul bilan ajratib, barchasini kvadrat qavs ichiga olish kifoya:


  4. ['string', (0,1,8), ]
    Tupledan farqli o'laroq, ro'yxatlar xohlagancha o'zgartirilishi mumkin. Elementlarga kirish kortejlardagi kabi amalga oshiriladi. Misol:
    l =]
    l, l, l[-2], l[-1] ni chop etish
    Natija: 1 s (2,8) 0
  5. Lug'at . U Paskal tilidagi yozuv turini yoki S dagi struktura tipini eslatadi.Lekin bu yerda “yozuv maydoni” – “qiymat” sxemasi o‘rniga “kalit” - “qiymat” ishlatiladi. Lug'at kalit-qiymat juftliklari to'plamidir. Bu erda "kalit" har qanday turdagi doimiydir (lekin satrlar asosan ishlatiladi), u qandaydir mos keladigan qiymatni nomlash (indekslash) uchun xizmat qiladi (uni o'zgartirish mumkin).

  6. Lugʻat uning elementlarini roʻyxatlash (kalit-qiymat juftlari ikki nuqta bilan ajratilgan), vergul bilan ajratilgan va ularning barchasini jingalak qavslar ichiga olish orqali yaratiladi. Muayyan qiymatga kirish uchun lug'at nomidan keyin kvadrat qavs ichiga tegishli kalitni yozing. Misol:
    d = ("a": 1, "b": 3, 5: 3,14, "ism": "Jon")
    d["b"] = d
    d["a"], d["b"], d, d["ism"]ni chop eting
    Natija: 1 3.14 3.14 Yuhanno
    Yangi kalit-qiymat juftligini qo'shish uchun yangi kalit bilan elementga mos qiymatni belgilang:
    d["yangi"] = "yangi qiymat"
    chop etish d
    Natija: ("a":1, "b":3, 5:3.14, "ism":"Jon", "yangi":"yangi qiymat")

3. Python, Paskal, C, C++ dan farqli o'laroq, ko'rsatkichlar, dinamik xotira va manzil arifmetikasi bilan ishlashni qo'llab-quvvatlamaydi. Shu tarzda u Java-ga o'xshaydi. Ma'lumki, ko'rsatkichlar nozik xatolar manbai bo'lib, ular bilan ishlash ko'proq past darajadagi dasturlash bilan bog'liq. Ko'proq ishonchlilik va soddalikni ta'minlash uchun ular Python-ga kiritilmagan.

4. Python-ning xususiyatlaridan biri - bir o'zgaruvchining boshqasiga qanday tayinlanishi, ya'ni. operatorning har ikki tomonida bo'lganda" = "o'zgaruvchilar mavjud.

Timoti Buddga () ergashib, biz qo'ng'iroq qilamiz ko'rsatkich semantikasi topshiriq faqat ma'lumotnoma (ko'rsatgich) tayinlanishiga olib keladigan holat, ya'ni. yangi o'zgaruvchi eski o'zgaruvchi bilan bir xil xotira joyini bildiruvchi boshqa nomga aylanadi. Bunday holda, yangi o'zgaruvchi bilan belgilangan qiymatni o'zgartirish eski qiymatining o'zgarishiga olib keladi, chunki ular aslida bir xil narsani anglatadi.

Agar topshiriq yangi ob'ektni yaratishga olib kelsa (bu erda ob'ekt - biron bir turdagi qiymatni saqlash uchun xotira bo'lagi ma'nosida) va unga tayinlangan o'zgaruvchining mazmunini nusxalash, biz bu holatni chaqiramiz. semantikani nusxalash. Shunday qilib, agar nusxa ko'chirishda nusxa ko'chirish semantikasi qo'llanilsa, u holda "=" belgisining har ikki tomonidagi o'zgaruvchilar bir xil tarkibga ega ikkita mustaqil ob'ektni bildiradi. Va bu erda bir o'zgaruvchining keyingi o'zgarishi boshqasiga hech qanday ta'sir qilmaydi.

Python-da topshiriq quyidagicha ishlaydi: if tayinlanishi mumkin ob'ekt raqamlar yoki satrlar kabi turlarning namunasi bo'lsa, u holda nusxa ko'chirish semantikasi qo'llaniladi, lekin agar o'ng tomonda sinf, ro'yxat, lug'at yoki kortej misoli bo'lsa, u holda ko'rsatgich semantikasi qo'llaniladi. Misol:
a = 2; b = a; b = 3
chop etish "semantikani nusxalash: a=", a, "b=", b
a = ; b = a; b = 3
chop etish "ko'rsatkich semantikasi: a=", a, "b=", b
Natija:
semantikani nusxalash: a= 2 b= 3
ko'rsatkich semantikasi: a= b=

Bu yerda nimalar bo‘layotganini bilmoqchi bo‘lganlar uchun men sizga Python-da topshiriqni boshqacha qabul qilaman. Agar Basic, Pascal, C/C++ kabi tillarda biz "sig'im" o'zgaruvchilari va ularda saqlangan konstantalar (raqamli, ramziy, string - bu muhim emas) bilan ishlagan bo'lsak va belgilash operatsiyasi doimiyni "kirish" degan ma'noni anglatadi. tayinlangan o'zgaruvchiga kiriting, keyin Pythonda biz allaqachon "nom" o'zgaruvchilari va ular nomlagan ob'ektlar bilan ishlashimiz kerak. (Prolog tili bilan ba'zi o'xshashliklarga e'tibor bering?) Pythonda ob'ekt nima? Bu nom berilishi mumkin bo'lgan hamma narsa: raqamlar, satrlar, ro'yxatlar, lug'atlar, sinf misollari (Object Pascalda ob'ektlar deb ataladi), sinflarning o'zlari (!), funktsiyalar, modullar va boshqalar. Shunday qilib, ma'lum bir ob'ektga o'zgaruvchini tayinlashda o'zgaruvchi uning "nomi" ga aylanadi va ob'ekt xohlagancha ko'p "nomlarga" ega bo'lishi mumkin va ularning barchasi bir-biridan mustaqildir.

Endi ob'ektlar o'zgartiriladigan (o'zgaruvchan) va o'zgarmaslarga bo'linadi. O'zgaruvchan - ularning "ichki tarkibini" o'zgartirishi mumkin bo'lganlar, masalan, ro'yxatlar, lug'atlar, sinf misollari. Va o'zgarmaslar - raqamlar, kortejlar, satrlar (ha, satrlar ham; siz eskisidan olingan yangi satrni o'zgaruvchiga belgilashingiz mumkin, lekin siz eski qatorni o'zgartira olmaysiz).

Shunday qilib, agar yozsak a = ; b = a; b = 3, Python buni quyidagicha izohlaydi:

  • ob'ektga "ro'yxat" bering "Ism a ;
  • bu ob'ektga boshqa nom bering - b ;
  • ob'ektning null elementini o'zgartirish.

  • Ko'rsatkichlarning "psevdo" semantikasini shu tarzda olamiz.

    Bu haqda so'nggi bir narsa aytish kerak: garchi kortejning tuzilishini o'zgartirish mumkin bo'lmasa ham, uning tarkibidagi o'zgaruvchan komponentlar hali ham o'zgartirish uchun mavjud:

    T = (1, 2, , "string") t = 6 # bu mumkin emas del t # ham xato t = 0 # ruxsat berilgan, endi uchinchi komponent ro'yxat t = "S" # xato: satrlar emas o'zgaruvchan

    5. Pythonning operatorlarni guruhlash usuli juda original. Paskalda bu operator qavslar yordamida amalga oshiriladi boshlanish - oxiri, C, C++, Java tillarida - jingalak qavslar (), Basic tilida til konstruksiyalarining yakunlovchi uchlari qo'llaniladi (NEXT, WEND, END IF, END SUB).
    Python-da hamma narsa ancha sodda: bayonotlar blokini tanlash tanlangan guruhni ushbu blok tegishli bo'lgan strukturaning boshiga nisbatan bir yoki bir nechta bo'shliqlar yoki yorliqlar bilan o'ngga siljitish orqali amalga oshiriladi. Masalan:

    agar x > 0 bo'lsa: ‘ x > 0 ’ x = x - 8 bo‘lsa: chop eting ‘ x<= 0 ’ x = 0 Shunday qilib, Paskal, C++, Java va boshqalar tillari o'qituvchilari chaqiradigan dasturlarni yozishning yaxshi uslubi bu erda boshidanoq olingan, chunki u boshqa yo'l bilan ishlamaydi.

    Tilning tavsifi. Nazorat tuzilmalari



    Istisno bilan ishlash


    harakat qilib ko'ring:
    <оператор1>
    [bundan mustasno[<исключение> [, <переменная>] ]:
    <оператор2>]
    [boshqa <оператор3>]
    Amalga oshirildi<оператор1>, agar istisno yuzaga kelsa<исключение>, keyin bajariladi<оператор2>. Agar<исключение>qiymatga ega, u tayinlangan<переменной>.
    Muvaffaqiyatli tugagandan so'ng<оператора1>, bajarildi<оператор3>.
    harakat qilib ko'ring:
    <оператор1>
    nihoyat:
    <оператор2>
    Amalga oshirildi<оператор1>. Agar istisnolar bo'lmasa, bajaring<оператор2>. Aks holda amalga oshiriladi<оператор2>va istisno darhol ko'tariladi.
    oshirish <исключение> [<значение>] Istisno chiqaradi<исключение>parametr bilan<значение>.

    Istisnolar faqat satrlardir. Misol:

    My_ex = 'yomon indeks' sinab ko'ring: agar yomon bo'lsa: my_exni ko'taring, my_exdan tashqari yomon, qiymat: chop etish 'Xato', qiymat

    Funktsiya deklaratsiyasi



    Sinf deklaratsiyasi



    Class cMyClass: def __init__(self, val): self.value = val # def printVal(self): print ' value = ', self.value # # end cMyClass obj = cMyClass (3.14) obj.printVal() obj.value = " hozir string" obj.printVal () !} Natija:
    qiymati = 3.14
    qiymat = hozir qator

    Barcha turdagi ketma-ketliklar uchun operatorlar (ro'yxatlar, kortejlar, satrlar)


    Ro'yxatlar uchun operatorlar (ro'yxat)


    s[i] = x i-chi element s o'rniga x qo'yiladi.
    s = t s elementlarning i dan j-1 gacha bo'lgan qismi t bilan almashtiriladi (t ro'yxat ham bo'lishi mumkin).
    del s s qismini olib tashlaydi (s = bilan bir xil).
    s.append(x) s ning oxiriga x elementni qo'shadi.
    s.hisob(x) x ga teng s elementlar sonini qaytaradi.
    s.index(x) s[i]==x bo'ladigan eng kichik i ni qaytaradi.
    s.insert(i,j) s ning i-elementdan boshlab qismi o‘ngga siljiydi va x ga s[i] tayinlanadi.
    s.olib tashlash(x) del s[ s.index(x) ] bilan bir xil - x ga teng s ning birinchi elementini olib tashlaydi.
    s.reverse() satrni teskari tartibda yozadi
    s.sort() ro'yxatni o'sish tartibida tartiblaydi.

    Lug'atlar uchun operatorlar


    Fayl ob'ektlari


    O'rnatilgan funksiya tomonidan yaratilgan ochiq()(quyida uning tavsifiga qarang). Masalan: f = ochiq('mydan.dat','r').
    Usullari:

    Boshqa til elementlari va o'rnatilgan funktsiyalar


    = topshiriq.
    chop etish [ < c1 > [, < c2 >]* [, ] ] qiymatlarni aks ettiradi< c1 >, < c2 >standart chiqishga. Argumentlar orasiga bo'sh joy qo'yadi. Agar argumentlar ro'yxati oxirida vergul bo'lmasa, u yangi qatorga o'tadi.
    abs(x) x ning mutlaq qiymatini qaytaradi.
    qo'llash ( f , <аргументы>) f funksiyasini (yoki usulini) bilan chaqiradi< аргументами >.
    chr(i) ASCII kodi i bilan bir belgili qatorni qaytaradi.
    cmp(x,y) Agar mos ravishda x bo'lsa, salbiy, nol yoki ijobiy qaytaradi<, ==, или >y ga qaraganda.
    divmod (a, b) kortejni qaytaradi (a/b, a%b), bu erda a/b - div b (bo'lish natijasining butun qismi), a% b - mod b (bo'linishning qolgan qismi).
    baho(lar)
    s da ko'rsatilgan ob'ektni satr sifatida qaytaradi. S har qanday til strukturasini o'z ichiga olishi mumkin. S kod ob'ekti ham bo'lishi mumkin, masalan: x = 1 ; incr_x = baholash ("x+1") .
    float(x) x soniga teng haqiqiy qiymatni qaytaradi.
    hex(x) x ning o'n oltilik ko'rinishini o'z ichiga olgan qatorni qaytaradi.
    kiritish(<строка>) ko'rsatadi<строку>, standart kiritishdan qiymatni o'qiydi va qaytaradi.
    int(x) x ning butun qiymatini qaytaradi.
    len(lar) ob'ekt uzunligini (elementlar sonini) qaytaradi.
    uzun(x) x uzun tamsayı qiymatini qaytaradi.
    maksimal(lar), min(lar) s ketma-ketlikning eng katta va eng kichik elementini qaytaring (ya'ni, s - satr, ro'yxat yoki kortej).
    oktyabr(x) x sonining ifodasini o'z ichiga olgan qatorni qaytaradi.
    ochiq(<имя файла>, <режим>='r' ) o'qish uchun ochilgan fayl ob'ektini qaytaradi.<режим>= 'w' - yozish uchun ochilish.
    ord(c) belgining ASCII kodini qaytaradi (uzunligi 1 satr) c.
    pow(x, y) x ning qiymatini y ning kuchiga qaytaradi.
    diapazon(<начало>, <конец>, <шаг>) dan katta yoki teng butun sonlar ro'yxatini qaytaradi<начало>va kamroq<конец>, berilgan bilan hosil qilingan<шагом>.
    raw_input( [ <текст> ] ) ko'rsatadi<текст>standart chiqishga va standart kirishdan satrni o'qiydi.
    dumaloq (x, n=0) haqiqiy x ni o'nlik kasrgacha yaxlitlangan holda qaytaradi.
    str(<объект>) satr tasvirini qaytaradi<объекта>.
    turi(<объект>) ob'ekt turini qaytaradi.
    Misol uchun: agar type(x) == type(‘'): chop eting ‘bu satr’
    xrange (<начало>, <конец>, <шаг>) diapazonga o'xshaydi, lekin ro'yxatni yaratmasdan faqat simulyatsiya qiladi. For tsiklida ishlatiladi.

    Ro'yxatlar bilan ishlash uchun maxsus funktsiyalar


    filtr (<функция>, <список>) ushbu elementlar ro'yxatini qaytaradi<спиcка>, buning uchun<функция>"to'g'ri" qiymatini oladi.
    xarita(<функция>, <список>) amal qiladi<функцию>har bir elementga<списка>va natijalar ro'yxatini qaytaradi.
    kamaytirish ( f , <список>,
    [, <начальное значение> ] )
    "kamaytirish" orqali olingan qiymatni qaytaradi<списка>funktsiya f. Bu ishga tushirilgan ba'zi ichki o'zgaruvchi p mavjudligini anglatadi<начальным значением>, keyin har bir element uchun<списка>, f funktsiyasi ikkita parametr bilan chaqiriladi: p va element<списка>. f tomonidan qaytarilgan natija p ga tayinlanadi. Hamma narsani boshdan kechirgandan keyin<списка>daromadlarni kamaytirish p.
    Ushbu funktsiyadan foydalanib, siz, masalan, ro'yxat elementlarining yig'indisini hisoblashingiz mumkin: def func (qizil, el): qizil+el summasini qaytaring = kamaytirish (funk, , 0) # endi yig'indisi == 15
    lambda [<список параметров>] : <выражение> Nomga ega bo'lmagan va chaqirilgan joyda yoziladigan "anonim" funksiya. da ko'rsatilgan parametrlarni qabul qiladi<списке параметров>, va qiymatni qaytaradi<выражения>. Filtrlash, kamaytirish, xaritalash uchun ishlatiladi. Masalan: >>>bosib chiqarish filtri (lambda x: x>3, ) >>>xaritani chop etish (lambda x: x*2, ) >>>p=kamaytirish (lambda r, x: r*x, , 1) >>> 24-betni chop etish

    Import modullari



    Standart matematik modul


    Oʻzgaruvchilar: pi, e.
    Funksiyalar(C tilining funktsiyalariga o'xshash):

    acos(x) cosh(x) ldexp(x,y) sqrt(x)
    asin(x) Exp(x) log(x) tan(x)
    atan(x) fabs(x) sinh(x) frexp(x)
    atan2(x,y) qavat(x) pow(x,y) modf(x)
    shift(x) fmod(x,y) gunoh(x)
    cos(x) log10(x) tan(x)

    string moduli


    Funksiyalari:

    Xulosa


    Python tilining soddaligi va moslashuvchanligi tufayli uni dasturchi bo'lmagan, lekin foydalanuvchilarga (matematiklar, fiziklar, iqtisodchilar va boshqalar) tavsiya qilish mumkin. kompyuter texnologiyasi va mening ishimda dasturlash.
    Python-dagi dasturlar kompilyatsiya qilingan tillarga (C, C++, Paskal) qaraganda o'rtacha bir yarim-ikki (va ba'zan ikki-uch) baravar tezroq ishlab chiqiladi. Shu sababli, bu til bajarilish tezligi uchun muhim bo'lmagan ilovalarni, shuningdek, murakkab ma'lumotlar tuzilmalaridan foydalanadigan dasturlarni ishlab chiqadigan professional dasturchilar uchun katta qiziqish uyg'otishi mumkin. Xususan, Python grafiklar bilan ishlash va daraxtlarni yaratish dasturlarini ishlab chiqishda o'zini yaxshi isbotladi.

    Adabiyot


    1. Budd T. Ob'ektga yo'naltirilgan dasturlash. - Sankt-Peterburg: Pyotr, 1997 yil.
    2. Gido van Rossum. Python darsligi. (www.python.org)
    3. Kris Xoffman. Python tezkor ma'lumotnomasi. (www.python.org)
    4. Gido van Rossum. Python kutubxonasi uchun ma'lumotnoma. (www.python.org)
    5. Gido van Rossum. Python uchun qo'llanma. (www.python.org)
    6. Gido van Rossum. Python dasturlash ustaxonasi. (http://sultan.da.ru)

    (tarjima)

    Poromenos Stuff veb-saytida ular Python tilining asoslari haqida gapiradigan maqola chop etildi aniq bo'lmasligi mumkin bo'lgan fikrlar.

    Agar siz Python tilini o'rganishni rejalashtirayotgan bo'lsangiz, lekin mos qo'llanmani topa olmasangiz, unda ushbu maqola siz uchun juda foydali bo'ladi! Qisqa vaqt ichida siz Python tilining asoslari bilan tanishishingiz mumkin bo'ladi. Ushbu maqola ko'pincha dasturlash tajribasiga ega ekanligingizga tayansa ham, umid qilamanki, hatto yangi boshlanuvchilar ham ushbu materialni foydali deb topadilar. Har bir paragrafni diqqat bilan o'qing. Materialning kondensatsiyasi tufayli ba'zi mavzular yuzaki muhokama qilinadi, lekin barcha kerakli materiallarni o'z ichiga oladi.

    Asosiy xususiyatlar

    Python o'zgaruvchilarni aniq e'lon qilishni talab qilmaydi va katta-kichik harflarga sezgir (var o'zgaruvchisi Var yoki VAR ga ekvivalent emas - ular uch xil o'zgaruvchidir) ob'ektga yo'naltirilgan tildir.

    Sintaksis

    Birinchidan, ta'kidlash joiz qiziqarli xususiyat Python. U operator qavslarini o'z ichiga olmaydi (begin..paskalda yoki (..) Cda), o'rniga bloklar chuqurlashtirilgan: bo'shliqlar yoki yorliqlar va bayonotlar blokini kiritish ikki nuqta bilan amalga oshiriladi. Bir qatorli sharhlar "#" funt belgisi bilan boshlanadi, ko'p qatorli sharhlar uchta qo'sh tirnoq """ bilan boshlanadi va tugaydi.

    O'zgaruvchiga qiymat berish uchun "=" belgisi, taqqoslash uchun esa "==" ishlatiladi. O'zgaruvchining qiymatini oshirish yoki satrga qo'shish uchun "+=" operatoridan foydalaning va uni kamaytirish uchun "-=" dan foydalaning. Ushbu operatsiyalarning barchasi ko'pgina turlar, shu jumladan satrlar bilan o'zaro ta'sir qilishi mumkin. Masalan

    >>> myvar = 3

    >>> myvar += 2

    >>> myvar -= 1

    """Bu ko'p qatorli sharh

    Uchta qo'sh tirnoq ichiga olingan satrlar e'tiborga olinmaydi"""

    >>> mystring = "Salom"

    >>> mystring += "dunyo."

    >>> mystringni chop eting

    Salom Dunyo.

    # Keyingi qator o'zgaradi

    O'zgaruvchilarning qiymatlari almashtiriladi. (Faqat bitta qator!)

    >>> myvar, mystring = mystring, myvar

    Ma'lumotlar tuzilmalari

    Python ma'lumotlar tuzilmalarini o'z ichiga oladi, masalan ro'yxatlar, kortejlar va lug'atlar). Ro'yxatlar bir o'lchovli massivlarga o'xshaydi (lekin siz ro'yxatlarni o'z ichiga olgan Ro'yxatni ishlatishingiz mumkin - ko'p o'lchovli massiv), kortejlar o'zgarmas ro'yxatlar, lug'atlar ham ro'yxatlardir, lekin indekslar faqat raqamli emas, har qanday turdagi bo'lishi mumkin. Python-dagi "massivlar" har qanday turdagi ma'lumotlarni o'z ichiga olishi mumkin, ya'ni bitta massiv raqamli, string va boshqa ma'lumotlar turlarini o'z ichiga olishi mumkin. Massivlar 0 indeksdan boshlanadi va oxirgi elementga -1 indeksida kirish mumkin. Siz o'zgaruvchilarga funksiyalar belgilashingiz va ulardan mos ravishda foydalanishingiz mumkin.

    >>> namuna = , ("a", "tuple")] #Roʻyxat butun son, boshqa roʻyxat va kortejdan iborat

    >>> mylist = ["Roʻyxat elementi 1", 2, 3.14] #Ushbu roʻyxat qator, butun son va kasrdan iborat

    >>> mylist = "1-bandni yana roʻyxatlash" #Vaqtlar roʻyxatining birinchi (nol) elementini oʻzgartiring

    >>> mylist[-1] = 3.14 #Varaqning oxirgi elementini o'zgartiring

    >>> mydict = ("Kalit 1": "Qiymat 1", 2: 3, "pi": 3.14) #Raqamli va butun son indekslari bilan lug'at yarating

    >>> mydict["pi"] = 3.15 #"pi" indeksi ostidagi lug'at elementini o'zgartiring.

    >>> mytuple = (1, 2, 3) # Kortejni belgilang

    >>> myfunction = len #Python funksiya sinonimlarini shu tarzda e'lon qilish imkonini beradi

    >>> mening funksiyamni chop etish (roʻyxat)

    Massivning bir qismidan “:” nuqta bilan ajratilgan birinchi va oxirgi indeksni belgilash orqali foydalanishingiz mumkin. Bunday holda, siz birinchi indeksdan ikkinchisiga qadar massivning bir qismini olasiz, inklyuziv emas. Agar birinchi element ko'rsatilmagan bo'lsa, u holda hisoblash massivning boshidan boshlanadi va agar oxirgi element ko'rsatilmagan bo'lsa, u holda massiv oxirgi elementgacha o'qiladi. Salbiy qiymatlar elementning o'rnini oxiridan aniqlaydi. Masalan:

    >>> mylist = ["Roʻyxat elementi 1", 2, 3.14]

    >>> chop mylist[:] #Barcha massiv elementlari o‘qiladi

    ["Ro‘yxat elementi 1", 2, 3.1400000000000001]

    >>> chop mylist #Masivning nol va birinchi elementlari o'qiladi.

    ["Ro'yxat 1", 2]

    >>> chop mylist[-3:-1] #Elementlar noldan (-3) soniyagacha (-1) oʻqiladi (shu jumladan emas)

    ["Ro'yxat 1", 2]

    >>> chop mylist #Elementlar birinchidan oxirigacha o'qiladi

    Strings

    Python tilidagi satrlar qo'sh tirnoq """ yoki bitta tirnoq """ bilan ajratilgan. Ikkita tirnoq ichida bitta tirnoq bo'lishi mumkin yoki aksincha. Masalan, "U salom aytdi!" "U salom dedi!" sifatida ko'rsatiladi. Agar siz bir nechta satrdan iborat satrni ishlatishingiz kerak bo'lsa, u holda bu satr uchta qo'sh tirnoq bilan boshlanishi va tugashi kerak """ Siz satr shabloniga foiz belgisini qo'yishingiz mumkin va kortej “%s” qatoridagi belgilarni kortej elementiga almashtiradi. Bunday holda, "%(index)s" o'rniga berilgan indeksdagi lug'at qiymati almashtiriladi.

    >>>chop etish "Ism: %s\nRaqam: %s\nString: %s" % (myclass.name, 3, 3 * "-")

    Nomi: Poromenos

    Raqam: 3

    String: ---

    strString = """Ushbu matn joylashgan

    bir necha qatorda"""

    >>> chop "Bu %(fe'l)s a %(ism)s." %("ism": "test", "fe'l": "is")

    Bu sinov.

    Operatorlar

    while, if, for iboralari ko‘chirish operatorlarini tashkil qiladi. Tanlangan iboraning ekvivalenti yo'q, shuning uchun siz if bilan shug'ullanishingiz kerak bo'ladi. For bayonoti taqqoslashni amalga oshiradi o'zgaruvchi va ro'yxat. Raqamgacha bo'lgan raqamlar ro'yxatini olish uchun - diapazondan (funktsiyasidan foydalaning ). Operatorlardan foydalanishga misol keltiramiz

    diapazon roʻyxati = interval(10) #Oʻnta raqam roʻyxatini oling (0 dan 9 gacha)

    >>> diapazonlar roʻyxatini chop etish

    diapazon ro'yxatidagi raqam uchun: #O'zgaruvchi raqam (har safar bittaga oshiriladi) ro'yxatda bo'lsa...

    # O'zgaruvchining kiritilganligini tekshiring

    # raqamdan sonlar majmuasiga (3, 4, 7, 9)

    Agar raqam (3, 4, 7, 9) ichida bo'lsa: #Agar raqam kortejda bo'lsa (3, 4, 7, 9)...

    # "Bozish" operatsiyasini ta'minlaydi

    # istalgan vaqtda tsikldan chiqing

    Tanaffus

    Boshqa:

    # "davom etish" "aylantirish" ni bajaradi

    # halqa. Bu erda talab qilinmaydi, chunki bu operatsiyadan keyin

    # har qanday holatda, dastur tsiklni qayta ishlashga qaytadi

    Davom eting

    boshqa:

    # "else" ixtiyoriy. Shart bajarilgan

    # agar tsikl "break" bilan uzilmagan bo'lsa.

    Pass # Hech narsa qilmang

    agar diapazon ro'yxati == 2 bo'lsa:

    "Ikkinchi element (ro'yxatlar 0 ga asoslangan) 2" ni chop eting

    elif rangelist == 3:

    "Ikkinchi element (ro'yxatlar 0 ga asoslangan) 3" ni chop eting

    boshqa:

    "Bilmayman" ni chop eting

    rangelist == 1 esa:

    O'tish

    Funksiyalar

    Funktsiyani e'lon qilish uchun foydalaning kalit so'z "def". Funksiya argumentlari funksiya nomidan keyin qavs ichida beriladi. Siz ixtiyoriy argumentlarni belgilashingiz va ularga standart qiymat berishingiz mumkin. Funktsiyalar kortejlarni qaytarishi mumkin, bu holda siz vergul bilan ajratilgan qaytarish qiymatlarini yozishingiz kerak. "lambda" kalit so'zi elementar funktsiyalarni e'lon qilish uchun ishlatiladi.

    # arg2 va arg3 ixtiyoriy argumentlardir, sukut bo'yicha e'lon qilingan qiymatni oling,

    # agar funktsiyani chaqirganda ularga boshqa qiymat bermasangiz.

    def myfunction(arg1, arg2 = 100, arg3 = "test"):

    arg3, arg2, arg1ni qaytaring

    #Funktsiya birinchi argumentning qiymati bilan chaqiriladi - "Argument 1", ikkinchisi - sukut bo'yicha va uchinchisi - "Nomlangan argument".

    >>>ret1, ret2, ret3 = myfunction("Argument 1", arg3 = "Nomli argument")

    # ret1, ret2 va ret3 mos ravishda "Nomlangan argument", 100, "Argument 1" qiymatlarini oladi

    >>> ret1, ret2, ret3 ni chop eting

    Nomlangan argument 100 argument 1

    # Quyidagi def f(x) ga ekvivalent: x + 1 ni qaytaring

    functionvar = lambda x: x + 1

    >>> chop etish funksiyasivar(1)

    Sinflar

    Python tili sinflarda bir nechta meros bo'yicha cheklangan. Ichki o'zgaruvchilar va ichki sinf usullari ikkita pastki chiziq "__" bilan boshlanadi (masalan, "__myprivatevar"). Bundan tashqari, biz tashqaridan sinf o'zgaruvchisiga qiymat belgilashimiz mumkin. Misol:

    sinf Myclass:

    Umumiy = 10

    def __init__ (o'z-o'zidan):

    Self.myvariable = 3

    Mening funksiyamni aniqlash (self, arg1, arg2):

    self.myvariable ni qaytaring

    # Bu erda biz Myclass sinfini e'lon qildik. Sinflar ishga tushirilganda __init__ funksiyasi avtomatik ravishda chaqiriladi.

    >>> classinstance = Myclass() # Biz sinfni ishga tushirdik va myvariable ishga tushirish usulida aytilganidek 3 qiymatiga ega.

    >>> classinstance.myfunction(1, 2) #Myclass sinfining myfunction usuli myvariable o‘zgaruvchisining qiymatini qaytaradi

    # Umumiy o'zgaruvchi barcha sinflarda e'lon qilinadi

    >>> classesinstance2 = Myclass()

    >>> classesinstance.common

    >>> classinstance2.common

    # Shunday qilib, agar Myclass sinfida uning qiymatini o'zgartirsak, u o'zgaradi

    # va uning Myclass klassi tomonidan ishga tushirilgan ob'ektlardagi qiymatlari

    >>> Myclass.common = 30

    >>> classesinstance.common

    >>> classinstance2.common

    # Va bu erda biz sinf o'zgaruvchisini o'zgartirmaymiz. Buning o'rniga

    # biz uni ob'ektda e'lon qilamiz va unga yangi qiymat beramiz

    >>> classesinstance.common = 10

    >>> classesinstance.common

    >>> classinstance2.common

    >>> Myclass.common = 50

    # Endi sinf o'zgaruvchisini o'zgartirish ta'sir qilmaydi

    Ushbu sinfning # o'zgaruvchan ob'ektlari

    >>> classesinstance.common

    >>> classinstance2.common

    # Quyidagi sinf Myclass sinfining avlodi

    # uning xususiyatlari va usullarini meros orqali, kim sinf mumkin

    # bir nechta sinflardan meros oladi, bu holda kirish

    # shunga o'xshash: sinf Boshqa sinf (Myclass1, Myclass2, MyclassN)

    sinf Boshqa sinf (Myclass):

    Def __init__(self, arg1):

    Self.myvariable = 3

    arg1 ni chop eting

    >>> classinstance = Boshqa sinf ("salom")

    Salom

    >>> classesinstance.myfunction(1, 2)

    # Bu sinfda xususiyat testi yo'q, lekin biz qila olamiz

    # ob'ekt uchun bunday o'zgaruvchini e'lon qilish. Bundan tashqari

    # bu o'zgaruvchi faqat classinstance a'zosi bo'ladi.

    >>> classesinstance.test = 10

    >>> classesinstance.test

    Istisnolar

    Python-dagi istisnolar try -except tuzilishiga ega:

    def somefunction():

    Sinab ko'ring:

    # Nolga bo'linish xatoga olib keladi

    10 / 0

    ZeroDivisionErrordan tashqari:

    # Ammo dastur "noqonuniy operatsiyani amalga oshirmaydi"

    # Va "ZeroDivisionError" xatosiga mos keladigan istisno blokini boshqaradi

    “Op, yaroqsiz” deb chop eting.

    >>> fnexcept()

    Yaroqsiz.

    Import

    Tashqi kutubxonalar "import" protsedurasi yordamida ulanishi mumkin, bu erda ulangan kutubxona nomi. Kutubxonadagi funktsiyadan foydalanishingiz uchun siz "importdan" buyrug'idan ham foydalanishingiz mumkin:

    tasodifiy import # “Tasodifiy” kutubxonani import qiling

    vaqtdan import soati #Va bir vaqtning o'zida "vaqt" kutubxonasidan "soat" funktsiyasi

    randomint = random.randint(1, 100)

    >>> randomint-ni chop eting

    Fayl tizimi bilan ishlash

    Python-da ko'plab o'rnatilgan kutubxonalar mavjud. Ushbu misolda biz ro'yxat strukturasini ikkilik faylda saqlashga, uni o'qishga va satrni matn faylida saqlashga harakat qilamiz. Ma'lumotlar strukturasini o'zgartirish uchun biz standart "tuzlangan" kutubxonasidan foydalanamiz:

    import tuzlangan

    mylist = ["Bu", "bu", 4, 13327]

    # Yozish uchun C:\binary.dat faylini oching. "r" belgisi

    # maxsus belgilarni almashtirishni oldini oladi (masalan, \n, \t, \b va boshqalar).

    myfile = fayl(r"C:\binary.dat", "w")

    pickle.dump(men ro'yxati, mening faylim)

    myfile.close()

    myfile = fayl(r"C:\text.txt", "w")

    myfile.write("Bu namuna qatori")

    myfile.close()

    myfile = fayl(r"C:\text.txt")

    >>> myfile.read() ni chop eting

    "Bu namuna qatori"

    myfile.close()

    # O'qish uchun faylni oching

    myfile = fayl(r"C:\binary.dat")

    yuklangan ro'yxat = pickle.load (mening faylim)

    myfile.close()

    >>> yuklangan roʻyxatni chop etish

    ["Bu", "bu", 4, 13327]

    Xususiyatlari

    • Shartlar birlashtirilishi mumkin. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
    • Buning uchun "del" operatoridan foydalaning aniq o'zgaruvchilar yoki massiv elementlari.
    • Python uchun katta imkoniyatlar taqdim etadi ro'yxatlar bilan ishlash. Roʻyxat tuzilmasi deklaratsiyasi operatorlaridan foydalanishingiz mumkin. For operatori ma'lum ketma-ketlikda ro'yxat elementlarini ko'rsatishga imkon beradi, if operatori esa shart asosida elementlarni tanlash imkonini beradi.

    >>> lst1 =

    >>> lst2 =

    >>> chop etish

    >>> chop etish

    # "Har qanday" operatori, agar bo'lsa ham, true qiymatini qaytaradi

    # agar unga kiritilgan shartlardan biri qondirilsa.

    >>> har qanday (i % 3 uchun i in )

    To'g'ri

    # Quyidagi protsedura raqamni hisoblaydi

    Ro'yxatdagi # mos element

    >>> yig‘indisi (i uchun 1, agar i == 3 bo‘lsa)

    >>> del lst1

    >>> lst1 ni chop eting

    >>> del lst1

    • Global o'zgaruvchilar Ular tashqi funktsiyalar deb e'lon qilinadi va hech qanday deklaratsiyalarsiz o'qilishi mumkin. Ammo agar siz global o'zgaruvchining qiymatini funktsiyadan o'zgartirishingiz kerak bo'lsa, uni funktsiyaning boshida "global" kalit so'zi bilan e'lon qilishingiz kerak, agar buni qilmasangiz, Python o'zgaruvchini e'lon qiladi. faqat ushbu funktsiyaga kirish mumkin.

    raqam = 5

    def myfunc():

    # Chiqishlar 5

    Raqamni chop etish

    def anotherfunc():

    # Bu global o'zgaruvchi bo'lgani uchun istisno qiladi

    # funksiyadan chaqirilmadi. Bu holda Python yaratadi

    Ushbu funktsiya ichida bir xil nomdagi # o'zgaruvchiga kirish mumkin

    # faqat ushbu funksiya operatorlari uchun.

    Raqamni chop etish

    Raqam = 3

    def yetanotherfunc():

    Global raqam

    # Va faqat ushbu funktsiyadan o'zgaruvchining qiymati o'zgartiriladi.

    Raqam = 3

    Epilog

    Albatta, bu maqola Pythonning barcha xususiyatlarini tasvirlab bermaydi. Umid qilamanki, agar siz ushbu dasturlash tilini o'rganishni davom ettirmoqchi bo'lsangiz, ushbu maqola sizga yordam beradi.

    Pythonning afzalliklari

    • Pythonda yozilgan dasturlarning bajarilish tezligi juda yuqori. Bu Python-ning asosiy kutubxonalari bilan bog'liq
      C++ tilida yozilgan va boshqa yuqori darajadagi tillarga qaraganda vazifalarni bajarish uchun kamroq vaqt talab etiladi.
    • Shu sababli siz o'zingizning Python modullaringizni C yoki C++ da yozishingiz mumkin
    • Standart Python kutubxonalarida siz ishlash uchun vositalarni topishingiz mumkin elektron pochta orqali, protokollar
      Internet, FTP, HTTP, ma'lumotlar bazalari va boshqalar.
    • Python yordamida yozilgan skriptlar aksariyat zamonaviy operatsion tizimlarda ishlaydi. Ushbu portativlik Python-dan keng ko'lamli ilovalarda foydalanish imkonini beradi.
    • Python har qanday dasturlash echimlari uchun mos keladi, xoh u ofis dasturlari, veb-ilovalar, GUI ilovalari va boshqalar.
    • Butun dunyodan minglab ishqibozlar Python-ni ishlab chiqish ustida ishladilar. Standart kutubxonalarda zamonaviy texnologiyalarni qo'llab-quvvatlash Python hamma uchun ochiq bo'lganligi bilan bog'liq bo'lishi mumkin.