1-sahifa 2-sahifa
Download 363.98 Kb.
|
Python
- Bu sahifa navigatsiya:
- 6.6. Qoshimcha tavsiyalar nomi bilan
- 47-bet 6.6. Qoshimcha nomlash boyicha korsatmalar 47
- 49-bet 6.7. Xulosa 49
- 50-sahifa ellik
- 51-bet 7 mulk tafsilotlari
- 52-sahifa 52
- 53-bet 7.2. Bir tur 53
- 54-sahifa 54
- Obekt Bir tur
- 55-bet 7.3. Ozgaruvchanlik 55 ESLATMA
6.5. O'zgaruvchan nomlar Python-da o'zgaruvchan nomlar umuman tasodifiy tanlanmaydi: ko'pchilik tomonidan amalga oshiriladigan aniq kelishuvlar mavjud dasturchilar. Ushbu shartnomalarning ba'zilari majburiydir, boshqalar yo'q. Masalan, tarjimon o'zgaruvchan nomni talab qiladi
in, shuning uchun sizning o'zgaruvchingizni break deb nomlash mumkin emas . Urinish paytida break- ni o'zgaruvchi nom sifatida foydalaning , siz sintaksisga ega bo'lasiz Xato. Va quyidagi kod juda oddiy ko'rinishga ega bo'lsa-da, Python xato haqida xabar beradi: >>> break = 'foo' " break = 'foo' ^ SyntaxError: yaroqsiz sintaksis Agar sintaktik xatoga duch kelsangiz ( SyntaxError ) Oddiy ko'rinadigan Python kodiga ishonch hosil qiling o'zgaruvchan nom kalit so'zga mos kelmaydi.
46 6-bob. O'zgaruvchilar ESLATMA Kalit so'zlar Python til tuzilishi uchun ajratilgan mu ularni python o'zgaruvchilari kelganda foydalanishga harakat qilganda sarosimada. Kalit so'z moduli barcha kalit so'zlarning ro'yxati bilan kwlist atributini o'z ichiga oladi Python:
>>> import qilish uchun kalit so'z >>> chop etish (keyword.kwlist) ['Soxta', 'Hech biri', 'Haqiqiy', 'va', 'sifatida', 'tasdiqlash', 'break', 'class', 'continue', 'def', 'del', 'elif', "boshqa", "tashqari", "oxirida", "uchun", "dan", "global", 'if', 'import', 'in', 'is', 'lambda', 'nonocal', 'emas', 'yoki', 'o'tish', 'ko'tarish', 'qaytish', 'urinish', 'while', 'with', 'rentabellik'] Siz shuningdek REPL-dagi kalit so'zlarni ko'rish uchun yordam () usuliga qo'ng'iroq qilishingiz mumkin . Bu REPL-ni mos yozuvlar rejimiga o'tkazadi, siz buni qila olasiz yordam uchun buyruqlarni kiriting (Python buyruqlaridan farqli o'laroq). Turi kalit so'zlar va matbuot kiriting . Agar biron bir kalit so'zni kiritsangiz, Gramda hujjatlar va tegishli yordam mavzulari ko'rsatiladi. Kimga chiqish Yordam rejimi, faqat bosing kiriting . 6.6. Qo'shimcha tavsiyalar nomi bilan Qoidadan tashqari, yuqorida aytib o'tilgan o'zgaruvchilar nomlari bo'lmaydi kalit so'zlarga mos kelishi mumkin, bir qator tavsiyalar mavjud, Python hamjamiyati tomonidan qo'llab-quvvatlanadi. Ushbu tavsiyalar oddiy: Able o'zgaruvchi nomlar kichik harflardan iborat bo'lishi kerak mamlakat; ❍ so'zlar pastki chiziq bilan ajratilishi kerak; Able o'zgaruvchi nomlar raqamlar bilan boshlanmaydi; ❍ o'zgaruvchi nomlar o'rnatilgan funktsiyalarni bekor qila olmaydi.
6.6. Qo'shimcha nomlash bo'yicha ko'rsatmalar 47 O'zgaruvchan nomlarning bir nechta namunalari - ham yaxshi, ham yomon: >>> yaxshi = 4 >>> bAd = 5 # yomon - katta harf >>> a_longer_variable = 6 # Tavsiya etilmaydi >>> badLongerVariable = 7 # Yomon - raqam bilan boshlanadi >>> 3-chi_bad_variable = 8 " 3-raqamli_variant = 8 ^ SyntaxError: yaroqsiz sintaksis # Yomon - kalit so'z >>> uchun = 4 " uchun = 4 ^ SyntaxError: yaroqsiz sintaksis # Yomon - o'rnatilgan funksiya >>> kompilyatsiya = 5 MASLAHAT Pythonni nomlash konventsiyalari va qoidalari hujjatda keltirilgan. "PEP 8 - Python Code uchun uslubiy qo'llanma" 1 . PEP Python-ni anglatadi Kengayish taklifi ", ya'ni" Python-ni takomillashtirish bo'yicha taklif "- bu funktsiyalarni takomillashtirish, hujjatlashtirish jarayonining nomi yoki Python uchun eng yaxshi amaliyotlar. PEP hujjatlari saytda mavjud. Python
Python kalit so'zlarni ism sifatida ishlatishga ruxsat bermasa ham o'zgaruvchilar, inline nomlar o'zgaruvchilar sifatida ishlatilishi mumkin. 1 https://www.python.org/dev/peps/pep-0008/
48 6-bob. O'zgaruvchilar O'rnatilganlar (o'rnatilganlar) - funktsiyalar, sinflar yoki o'zgaruvchilar nomlari, sizga osonlashtirishi uchun Python avtomatik ravishda yuklaydi ularga ta'qib qilish. Kalit so'zlardan farqli o'laroq, Python sizga foydalanishga imkon beradi o'rnatilgan nom o'zgaruvchan nom sifatida, hech qanday qarshiliksiz. Biroq, buni qilish tavsiya etilmaydi - bu belgi hisoblanadi yomon uslub. Ichki nomni o'zgaruvchan nom sifatida ishlatish o'rnatilgan ismni almashtirishga olib keladi . Yangi o'zgaruvchan nom ruxsat bermaydi ichki o'rnatilgan nomga kirish. Aslida siz olasiz o'rnatilgan o'zgaruvchidan foydalaning va uni o'zingizning ehtiyojlaringiz uchun oling. Niya. Natijada, o'rnatilgan ichki ismga kirish mumkin bo'ladi faqat __builtins__ moduli orqali . Boshidanoq qochish yaxshidir. almashtirish. Quyida ishlatilmasligi kerak bo'lgan o'rnatilgan Python nomlari mavjud. o'zgaruvchan nomlar sifatida o'rnatilsin: >>> dir (__ inshootlar__) ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'Amortizatsiya Ogohlantirish', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Istisno', 'Noto'g'ri', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'KutilayotganDeprecationWarning', 'PermissionsError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True',
6.7. Xulosa 49 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Ogohlantirish', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bul', 'bytrayray', 'bayt', 'qo'ng'iroq qilinadigan', 'chr', 'classmethod', 'compile', "murakkab", "mualliflik huquqi", "kreditlar", "delattr", 'dik', 'dir', 'divmod', 'raqamlash', 'baholash', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'litsenziya', 'ro'yxat', 'mahalliy', 'xarita', 'max', 'xotira ko'rinishi', 'min', 'keyingi', 'ob'ekt', 'sakkizinchi', 'ochish', 'tartib', 'toz', 'bosib chiqarish', 'mulk', 'chiqish', 'range', 'repr', 'teskari', 'round', 'set', 'setattr', 'tilim', 'saralangan', 'statikmetod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
MASLAHAT Jozibali ko'rinadigan bir nechta ichki nomlar o'zgaruvchan nomlar sifatida: dik , id , ro'yxat , min , max , ochiq , diapazon , str , yig'indisi va turi . 6.7. Xulosa Pythonda barcha ob'ektlar ob'ekt hisoblanadi. Ob'ektlar quyidagilardan iborat: Bu qiymat deb ham ataladigan hodisa. Ob'ektlar bilan ishlash o'zgaruvchilar ishlatiladi. Python o'zgaruvchilari teglarga o'xshaydi: ular ob'ektga bog'lang va ismga ega. Biroq, ob'ekt o'z ichiga oladi Muhim ma'lumotlar: qiymat va ma'lumotlar turi. Ushbu bo'limda parametrlarni qayta bog'lash ham ko'rib chiqiladi. ob'ektlar bilan. Python bunga imkon beradi, lekin siz bo'lishingiz kerak
ellik 6-bob. O'zgaruvchilar ehtiyot bo'ling va o'zgaruvchining turini o'zgartirmasligi kerak, chunki u kodni o'qiganlar uchun tushunishni murakkablashtiradi. Va nihoyat Ushbu bobda Python o'zgaruvchan nomlash konventsiyalari muhokama qilinadi.
1. Taxminiy qiymatga ishora qiluvchi o'zgaruvchan pi yarating qiymati π. R radiusni ifodalash uchun r o'zgaruvchisini yarating aylana; bu o'zgaruvchi 10 ga teng bo'lishi kerak. Maydonni hisoblang aylana (radiusning π × kvadrat). Ko'paytirish tomonidan amalga oshiriladi rum * va ** operatori bilan raqamni kvadrati . Masalan, natijasi 3 ** 2 bo'ladi 9 . 2. Chiziqning kengligini ko'rsatadigan b o'zgaruvchini yarating . 10 ga teng bo'lgan golnik. Bunga ishora qiladigan h o'zgaruvchini yarating 2. qiymati bo'lgan to'rtburchakning balandligi. uzunligini hisoblang to'rtburchakning perimetri. Kengligini unga o'rnatib o'zgartiring 6 ni tanlang va yana perimetrni hisoblang.
7 mulk tafsilotlari Ushbu bobda ob'ektlar batafsilroq muhokama qilinadi. Bu ketadi ob'ektlarning uchta muhim xususiyati haqida: ❍ identifikator; ❍ turi; ❍ qiymat. 7.1. Aniqlovchi Eng past darajada, identifikator yerleşmektedir kompyuter xotirasidagi ob'ekt. Python o'rnatilgan funktsiyaga ega ob'ekt identifikatorini qaytaradigan tion id : >>> name = "Matt" >>> id (ism) 140310794682416 Ushbu kod bajarilganda, "Matt" satr identifikatori ko'rsatiladi 140310794682416 shaklida (bu raqam operatsion manzilni aniqlaydi kompyuteringizning xotirasi). Odatda, identifikator o'zgaradi kompyuterga va qobiq sessiyasiga bog'liq holda dasturning hayot aylanishi davomida ob'ektning identifikatori o'zgarishsiz qoladi. Bitta sigir ikkita teg bilan belgilanishi mumkin; aynan bir xil O'zgaruvchilar bitta ob'ektga ishora qilishi mumkin. Agar siz boshqasini xohlasangiz
52 7-bob. Ob'ektlarning tafsilotlari o'zgaruvchi (aytaylik, birinchi ism bilan ) shuningdek, ob'ektga ishora qildi ko'rsatadi nomini , quyidagi buyruqni ishga tushirish: >>> birinchi = ism Buyruq Python-ga birinchi o'zgaruvchini bir xil qilib belgilashni buyuradi ism kabi aniqlovchi . Id funktsiyasi ikki marta bajarilganda o'zgaruvchilar bir xil qiymatlarni oladi: >>> id (birinchi) 140310794682416 >>> id (ism) 140310794682416 Ikkita o'zgaruvchi, bitta ob'ekt name = "Matt" Kod "Mat"
Id: 140 ... Turi: String Kompyuter nima qiladi O'zgaruvchan ob'ektlar nomi birinchi = ism birinchi Anjir. 7.1. Diagramma o'zgaruvchini bog'lashda nima sodir bo'lishini ko'rsatadi. mavjud o'zgaruvchiga ega. Ikkala o'zgaruvchi ham bitta ob'ektga ishora qiladi. Iltimos, diqqat qiling: o'zgaruvchi ko'chirilmaydi! Shuningdek, to'lash ob'ekt "Matt", turi va identifikatori qiymatiga ega ekanligiga e'tibor Siz identifikatordan nima foydalanasiz, deb so'raysiz? Aslida, foyda unchalik emas. juda ko'p. Python-da dasturlash paytida siz odatda qiziqtirmaysiz xotiradagi ob'ektning manzili kabi past darajadagi tafsilotlar. Ammo identifikator yordamida ob'ektlarni yaratish vaqtini ko'rsatishingiz mumkin va ularni o'zgartirish mumkinmi yoki yo'qmi. Bundan tashqari, identifikatorlar bilvosita uchun ishlatiladi bilan shaxsingizni tekshirib tasdiqlash, deb operatori .
7.2. Bir tur 53 Bo'lgan operator , u cheklar ko'rsatib bo'lgan cheklar tenglik, ikkita o'zgaruvchi bitta ob'ektda bo'ladimi: >>> birinchi ism Rost Chop Agar birinchi va nomi Repl yilda , shu qadriyatlar, paydo bo'ladi chunki ikkala ism ham bitta ob'ektga ishora qiladi: >>> chop etish (birinchi) Mat >>> bosma (ism) Mat Yorliqni bitta sigirdan olib, boshqasiga osib qo'yish mumkin. Xuddi shunday va o'zgaruvchini bir ob'ektdan ikkinchisiga o'tkazish mumkin. Masalan, biz o'zgaruvchini nomini yangi ob'ektga ishora qilishga majburlashimiz mumkin . Siz aniqlovchi nomi o'zgarganiga qarang, aniqlovchi esa birinchi bo'lib qoldi: >>> name = 'Fred' >>> id (ism) 140310794682434 >>> id (birinchi) 140310794682416
Ob'ektning yana bir mulki - bu uning turi . Dasturlarda, ko'pincha turlari, masalan, satrlar , butun sonlar , suzuvchi nuqta raqamlari va mantiqiy qadriyatlar . Sizga qo'shimcha ravishda boshqa ko'plab turlari mavjud Siz o'zingiz yaratishingiz mumkin. Odatda "ob'ekt turi" degan ma'noni anglatadi INDICATES sinf ob'ekti. Sinf saqlanadigan ma'lumotlarning holatini belgilaydi ob'ektda, shuningdek u bajarishi mumkin bo'lgan usullar (yoki harakatlar) ob'ekt. Pythonda ob'ektning turi osongina o'rnatilgan tomonidan tekshiriladi turi vazifasi : >>> turi (nomi)
54 7-bob. Ob'ektlarning tafsilotlari Bunday holda, tip o'zgaruvchisi nom o'zgaruvchisini bildirganligini bildiradi satr boshiga ( str ). Quyidagi jadvalda turli xil Python ob'ektlarining turlari keltirilgan.
Chiziq
str Butun son int Suzuvchi nuqta raqami suzuvchi Ro‘yxat
ro'yxati Lug'at
ayt To'piq
tuple Funktsiya funktsiyasi Foydalanuvchi tomonidan belgilangan sinf turi Sinf namunasi sinf O'rnatilgan funktsiya qurilgan_funktsiya _ yoki_metod turi
turi O'rdak yozuvidan foydalanilganligi sababli , tip funktsiyasidan foydalanilmaydi shunday tez-tez Ob'ekt turini tekshirishning o'rniga, ba'zi operatsiyalarni qo'llab-quvvatlaydi, odatda siz shunchaki harakat qilasiz ushbu operatsiyani bajaring. Biroq, ba'zida dasturda o'zgartirilishi kerak bo'lgan ma'lumotlar mavjud boshqa turga o'tish. Ushbu holat ma'lumotlarni o'qish uchun odatiy holdir standart kiritish: ma'lumotlar odatda satr sifatida keladi va bu satr raqamga aylantirish kerak. Python ichki sinflarni ta'minlaydi str , int , float , list , dik va tuple , agar kerak bo'lsa, bajaradi tegishli turga o'tkazish: >>> str (0) '0'
>>> tuple ([1,2]) (12)
>>> ro'yxati ('abc') ['a', 'b', 'c']
7.3. O'zgaruvchanlik 55 ESLATMA "O'rdakni terish" atamasi 18-asrning so'zlaridan kelib chiqqan mexanik o'rdak haqida aytilgan edi: "Agar u o'rdakka o'xshasa, u yuradi o'rdak kabi o'rdakni urish, keyin u o'rdak. " Biroq, men shaxsan "Monty Python and the Holy Grail ", bu erda bitta ayolda ular jodugarni og'irligi sababli taniydilar o'rdakning vazni qancha bo'lsa. (Agar sizga g'alati tuyulsa, qara film - menga yoqadi.) Gap shundaki, ayolning fikri xuddi shunday xususiyatlari (og'irligi), o'rdak kabi, shuning uchun uni jodugar deb hisoblash kerak. Python xuddi shunday harakat qiladi. Agar siz ob'ektdan foydalanish uchun element bor, siz uni qo'yish uchun Loop . Siz tekshirmaysiz bu ro'yxat yoki ro'yxat subklassidir, lekin shunchaki iteratsiya. Agar Siz qo'shimcha operatsiya qilishni xohlaysizmi, ob'ekt mavjudligini tekshirmayapsiz raqam yoki satr (yoki qo'shimcha qilishni qo'llab-quvvatlaydigan boshqa turdagi). Agar operatsiya muvaffaqiyatsiz bo'ladi - yaxshi, u shunchaki aytadi siz noto‘g‘ri turini taqdim etgansiz. Agar siz ob'ektga yo'naltirilgan dasturlash bilan tanish bo'lsangiz, “o'rdak "yozish" subklassifikatsiyasining qat'iy talablarini zaiflashtiradi. Ning o'rniga imtiyozlardan foydalanish uchun bir nechta sinflardan meros olish - ular amalga oshiradigan xatti-harakatlar, siz protokollarni amalga oshirishingiz kerak (odatda uchun) bir yoki ikkita usulni aniqlash kerak). Masalan, sinf yaratish uchun, qo'shimcha sifatida ishlatilishi mumkin, uni amalga oshirish kerak Todd .__ add__ . Har qanday sinf ushbu usulni aniqlab, unga javob berishi mumkin qo'shimcha ishlash. 7.3. O'zgaruvchanlik Ob'ektning yana bir qiziqarli xususiyati uning o'zgaruvchanligi . Ko'pchilik Ob'ektlar o'zgaruvchan , boshqalari o'zgarmasdir . O'zgaruvchan ob'ektlar ularning ma'nosini "joyida" o'zgartirishga imkon bering - boshqacha qilib aytganda, ularning o'rnini o'zgartirish mumkin, lekin ularning identifikatori o'zgarishsiz qoladi. O'zgarmas ob'ektlar sizning qiymatingizni o'zgartirishga imkon bermaydi. Buning o'rniga bu, ularning o'zgaruvchisi yangi ob'ekt bilan bog'liq, ammo u ham o'zgaruvchining aniqlovchisini o'zgartirishga olib keladi. Python-da lug'atlar va ro'yxatlar o'zgaruvchan turlardir. Chiziqlar, bog'lamlar, butun sonlar va suzuvchi nuqta raqamlari
56 7-bob. Ob'ektlarning tafsilotlari o'zgarmas turlarga Quyidagi misol buni ko'rsatmoqda O'zgarganida butun sonni o'z ichiga olgan o'zgaruvchining moslamasi o'zgaradi qiymatlar. Birinchidan, dastur yosh o'zgaruvchisiga butun sonni tayinlaydi va identifikatorni tekshiradi: >>> yoshi = 1000 >>> id (yosh) 140310794682416 Eslatma: agar siz endi butun sonni o'zgartirsangiz, u holda u yangi identifikatorga ega bo'ladi: >>> yosh = yosh + 1 >>> id (yosh) 140310793921824 Endi ro'yxatni o'zgartirish misolini ko'rib chiqaylik. Bo'sh ro'yxat bilan boshlaylik. va uning identifikatorini tekshiring. E'tibor bering: qo'shgandan keyin ham Ro'yxatga element qo'shilganda, ro'yxat identifikatori o'zgarishsiz qoladi. chunki ro'yxat o'zgaruvchan turi. Avval yaratamiz identifikatorni ro'yxatlang va tekshiring: >>> ismlar = [] >>> id (ism) 140310794682432 Endi ro'yxatga chiziq qo'shing. Bunga loyiq bir qator fikrlar mavjud diqqat. .Append usulining qaytish qiymati ko'rsatilmaydi (ya'ni, usul yangi ro'yxatni bermaydi). Ammo qarasangiz nomlari o'zgaruvchan , yangi nom ro'yxatga muvaffaqiyatli kiritilganligi ayon bo'ladi sharbati. Shuningdek, ro'yxat identifikatori o'zgarishsiz qoldi - ro'yxat muvaffaqiyatli o'zgartirildi: >>> name.append ("Fred") >>> nomlari ['Fred'] >>> id (ism) 140310794682432 O'zgaruvchan ob'ektlar kalit sifatida ishlatilmasligi kerak lug'atlarda. Bundan tashqari, ular ishlatilganda muammolarni keltirib chiqarishi mumkin. funktsiyalarda standart parametrlar sifatida.
Download 363.98 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling