Pythonni mustaqil


Bitta funksiyadan boshqasiga opsional va nomlangan para-metrlarni qanday uzatish mumkin?



Download 2,79 Mb.
bet101/109
Sana31.12.2021
Hajmi2,79 Mb.
#223336
1   ...   97   98   99   100   101   102   103   104   ...   109
Bog'liq
PYTHONNI MUSTAQIL O‘RGANAMIZ

Bitta funksiyadan boshqasiga opsional va nomlangan para-metrlarni qanday uzatish mumkin?
Bunday parametrlarni funksiya argumentlari hamda * va ** spetsifikatorlari yordamida hosil qilish mumkin, ular pozitsiyali argumentlardan iborat kortejni hamda nomlangan parametrlardan iborat lug‘atlarni qaytaradi. Shundan keyin siz ularni murojaatdagi * va ** dan foydalangan holda boshqa funksiyaga uzatishingiz mumkin:

def f(x, *args, **kwargs):


...
kwargs['width'] = '14.3c'
...
g(x, *args, **kwargs)

127

Nima uchun y ro‘yxatning ozgartirilishi x ro‘yxatning ham o‘zgar-ishiga olib keladi?

Agar siz quyidagi kodni yozsangiz:




  • x = []




  • y = x




  • y.append(10)




  • y

[10]



  • x [10]

y ga nimaningdir qo‘shilishi x ning ham o‘zgarishiga olib kelishini ko‘rasiz, bunga hayron qolishin-giz ham mumkin.


Bunday natijaga kelishimizning 2 ta asosiy sababi bor:


  • o‘zgaruvchilar – shunchaki obyektlarga bo‘lgan havolalar. y = x ro‘yxatning nusxasini yaratmaydi, bu buyruq yana bitta xuddi shu obyektga yo‘naltirilgan havolaga ega x o‘zgaru-vchini yaratadi;




  • ro‘yxatlarning o‘zgaruvchanligi.

append chaqirilganidan keyin, obyektning tarkibi [] dan [10] ga o‘zgardi. x va y aynan bitta obyektga havolaga ega bo‘lganligi sababli, ulardan har birining qo‘llanilishi bizga 10 ni qaytaradi.



Agar biz o‘zgarmaydigan obyektlarni qo‘llaydigan bo‘lsak:




  • x = 5 # sonlar o`zgarmas ob`yektlardir




  • y = x




  • x = x + 1 # 5 ni o`zgartirish mumkin emas. Biz yangi bir ob`yekt yaratamiz.




  • x

6


  • y

5
Bu yerda biz x va y endi o‘zaro teng emasligini ko‘rishimiz mumkin, chunki sonlar o‘zgarmas, x =




  1. + 1 5 sonini o‘shirish bilan o‘zgartirish mumkin emas. Buning o‘rniga yangi 6 obyekti yaratiladi va x o‘zgaruvchiga o‘zlashtirilad i(ya’ni x ning yo‘naltirilgan obyekti havolasi o‘zgartiriladi). Shun-dan keyin bizda 2 ta (5 va 6) obyekt hamda ularga havola sifatida 2 ta (x va y) o‘zgaruvchi hosil bo‘ladi.

Ba’zi operatsiyalar [masalan, y.append(10) va y.sort() kabilar] obyektni o‘zgartirishish bilan birga, ularga tashqi jihatdan o‘xshash bo‘lib ko‘ringan operatsiyalar [masalan, y = y + [10] va sorted(y) kabi] yangi obyekt yaratadi. Umuman, Pythonda (standart kutubxonaning barcha ho-latlarida ham) obyektni o‘zgartiradigan metodlar xatoliklardan xoli bo‘lish uchun Noneni qaytaradi. Deylik, siz quyidagicha yozgangiz:






128

y = y.sort()


U sizga y ning tartiblashtirilgan nusxasini qaytaradi, deb o‘ylayotgan bo‘lsangiz, uning o‘rniga Nonega ega bo‘lasiz, bu esa oson tahlil qilish mumkin bo‘lgan xatolikka olib keladi.
Yana bitta operatsiyalar klassi mavjudki, unda aynan bitta operatsiya turli tiplar bilan turlicha ishlaydi. U ham bo‘lsa, o‘zlashtirishning kengaytirilgan operatsiyalaridir. Masalan, += ro‘yxatlarni o‘zgartiradi, ammo kortej yoki sonlarni emas. (a_list += [1, 2, 3]) hamda a_list.extend([1, 2, 3]) lar o‘zaro ekvivalent) ro‘yxatni o‘zgartiradi. some_tuple += (1, 2, 3) va some_int += 1 esa yangi obyekt yaratadi.

Agar ikkita o‘zgaruvchi aynan bitta obyektga havolaga ega yoki ega emasligini bilmoqchi bo‘lsan-giz, u holda siz is operatori yoki id tarkibiy funksiyasidan foydalanishingiz mumkin.



Download 2,79 Mb.

Do'stlaringiz bilan baham:
1   ...   97   98   99   100   101   102   103   104   ...   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