Pythonni mustaqil


-bob: Ko‘p beriladigan savollar



Download 2,79 Mb.
bet95/109
Sana31.12.2021
Hajmi2,79 Mb.
#223336
1   ...   91   92   93   94   95   96   97   98   ...   109
Bog'liq
PYTHONNI MUSTAQIL O‘RGANAMIZ

33-bob: Ko‘p beriladigan savollar
Pythonda dasturlashni yangi boshlovchilarni ikkilantirishi mumkin bo‘lgan ayrim holatlar.
Nega menda o‘zgaruvchi qiymatga ega bo‘lsa ham, UnboundLo-calError noodatiy holat xabari paydo bo‘lmoqda?

Ba’zan avval ishlab turgan koddagi funksiyaga oddiygina o‘zlashtirish operatorini qo‘shishning natijasi sifatida UnboundLocalError xatoligi chiqib qolishi mumkin.



Quyidagi kod ishlaydi:




  • x = 10




  • def bar(): print(x)




  • bar()

10
Lekin mana bu kod UnboundLocalError xatoligiga olib keladi:




  • x = 10




  • def foo(): print(x) x += 1

Natija:



  • foo()

Traceback (most recent call last):


UnboundLocalError: local variable 'x' referenced before assignment
Buning sabab shundaki, siz o‘zgaruvchiga uning ko‘rinish sohasida qiymat berayotgan vaqtingiz-da, u shu sohada lokal o‘zgaruvchiga aylanib qoladi, bu esa tashqi sohadagi xuddi shu o‘zgaru-vchilarning yashirin holatga o‘tib qolishiga olib keladi.
foo funksiyasidagi oxirgi ko‘rsatma o‘z tarkibidagi x o‘zgaruvchiga yangi qiymat berganda, komp-ilyator bu lokal o‘zgaruvchi ekan, degan xato xulosaga keladi. Demak, undan oldinroqdagi print hali faollashtirilmagan o‘zgaruvchini chiqarishga intiladi va xatolik kelib chiqadi.
Yuqoridagi misolda murojaat qilish mumkin bo‘lishi uchun o‘zgaruvchini global o‘zgaruvchi sifati-da e’lon qilish mumkin:

122


  • x = 10




  • def foobar(): global x print(x)




    1. += 1




  • foobar()

10
Buni yaqqol e’lon qilishdan maqsad, tashqi ko‘rinish sohasidagi o‘zgaruvchi qiymatini o‘zgarti-rayotganingizni (klass va ekzemplyarlar bilan bog‘liq xuddi shunday holatdan farqli tarzda) sizga eslatib turishdan iborat.




  • print(x)

11
Xuddi shunday vazifani ko‘rinishning ichki sohasida ham bajarish uchun nonlocal so‘zidan foyda-lanishingiz mumkin:




  • def foo():




    1. = 10

def bar():


nonlocal x
print(x)
x += 1
bar()
print(x)


  • foo()

10
11



Download 2,79 Mb.

Do'stlaringiz bilan baham:
1   ...   91   92   93   94   95   96   97   98   ...   109




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2025
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish