1-sahifa 2-sahifa


Download 363.98 Kb.
bet5/21
Sana06.06.2020
Hajmi363.98 Kb.
#115448
1   2   3   4   5   6   7   8   9   ...   21
Bog'liq
Python


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

til kalit so'ziga mos kelmadi . Aytaylik, tanaffus bu muhim so'z

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'

"" fayli, 1-qator

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-bet

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.



47-bet

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

"" fayli, 1-qator

3-raqamli_variant = 8

^

SyntaxError: yaroqsiz sintaksis



# Yomon - kalit so'z

>>> uchun = 4

"" fayli, 1-qator

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

ESLATMA

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-bet

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',





49-bet

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





50-sahifa

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.

6.8. Mashqlar

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.





51-bet

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-sahifa

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 .





53-bet

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

7.2. Bir tur

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-sahifa

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.

Ob'ekt

Bir tur

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']





55-bet

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-bet

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.





57-sahifa

Download 363.98 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   21




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling