Dinamik tiplashtirilgan


[121, 1024, 64, 56.25, 25, 16, 27.5625]



Download 2,16 Mb.
bet27/56
Sana09.03.2022
Hajmi2,16 Mb.
#487710
1   ...   23   24   25   26   27   28   29   30   ...   56
Bog'liq
Ataxonov maruza

[121, 1024, 64, 56.25, 25, 16, 27.5625]
Ushbu misolda lyambda-funksiya aniqlangan sonlar ro`yhatining har bir elementi uchun kvadratini hisoblaydi va olingan natijalar kvadrati ro`yhatiga yozilgan.
Yuqoridagi misollardan ko`rinib turibdiki, lyambda-funksiyalar ham interpretator tomonidan oddiy funksiyalar kabi qayta ishlanadi va oddiy funksiyalarni ihcham shaklda yozishda ko`mak beradi.
Lyambda-funksiyalardan foydalanishning eng muhim afzalliklaridan biri – bu fuktsional dasturlashga imkon berishi bilan bog’liq. Bu holat funksiyalari boshqa bir funksiyaga argument sifatida uzatish imkonini beradi (saralash haqidagi misolga e`tibor bering).
Odatiy funksiyalar bir nechta ifoda va ko`rsatmalardan iborat bo`lishi mumkin, lyambda-funksiyalar esa faqat bitta ifodani o`z ichiga oladi.
Lyambda-funksiyalar o`zi bilan bog’lagan nomga ega bo`lmaydi. SHuning uchun ularni anonim funksiyalar deb ham yuritiladi. SHuningdek, return buyrug’ini ham o`z ichiga olmaydi. Chunki, hosil qilingan qiymat talab qilingan joyga to`g’ridan-to`g’ri uzatiladi.
Lyambdalar odatda Pythonning ichki modullari bilan birgalikda qo`llaniladi va ichki parametrlardan biri sifatida uzatiladi.

DEKORATORLAR


Dekoratorlar Python tilining eng muhim vositalaridan biri sanaladi va funksiyalar bilan ishlash amaliyotida keng qo`llaniladi.
Dekorator — bu funksiya bo`lib, boshqa funksiya kodiga o`zgarish kiritmagan holda uning vazifalarini kengaytirishga imkon berish maqsadida «o`rab olish» ga imkon beradi.
Bu holat bir dastur tomonidan ikkinchi dastur bilan xuddi o`zi uchun tashkil qilingan ma`lumotlar sifatida ishlashga ruhsat beradi.
Bilamizki, funksiya ‑ bu nomlangan va qandaydir muammoni hal qilishga qaratilgan amallar ketma⁃ketligidir. Odatda funksiyalar bitta masalani argumentlarning turli qiymatlari uchun qayta‑qayta hal qilishga to`g’ri keladigan vaziyatlarda tashkil qilish maqsadga muvofiq hisoblanadi. Bunday funksiyalarga ehtiyojga ko`ra dasturning ihtiyoriy qismida, boshqa funksiya tarkibida va hatto o`ziga o`zi murojaat qilish mumkin.
Python tilida deyarli barcha vositalar ob`ekt sanaladi. Bu ma`noda uni ob`ektga asoslangan dasturlash tili deb hisoblash mumkin. Demak, Python da sonlar ham, satrlar ham, klass va funksiyalar ham ob`ekt sanaladi. Bu holat dasturchilar uchun katta imkoniyatlarni taqdim etadi. Funksiyalarni o`zgaruvchilarga qiymat qilib berish, ularni argument sifatida boshqa funksiyalarga uzatish, boshqa funksiyalardan qaytarib olish, birining tarkibida ikkinchisini aniqlash va boshqalar ana shunday imkoniyatlardan hisoblanadi. Boshqacha aytganda, funksiyalar ‑ bu birinchi toifali ob`ektlardir.
O`zi ustida ob`ektlar uchun ruhsat berilgan barcha amallarni (parametr sifatida uzatish, o`zgaruvchilarga qiymat qilib berish, funksiyalardan qaytarib olish va h.k.) bajarishga imkon beradigan elementlarni birinchi toifali ob`ektlar deb ataladi.
Funktsional dasturlash yuqori tartibli funksiyalardan foydalanishni nazarda tutadi. Funksiyalarni argument sifatida qabul qiladigan va natija tarzida boshqa funksiyalarga uzatadigan funksiyalarni yuqori tartibli deb hisoblanadi.
Python tilida funktsional dasturlashning ayrim elementlaridan keng foydalaniladi. Unda funksiyalar birinchi toifali ob`ektlar sanaladi va shu sababli yuqori tartibli funksiyalar bilan ishlash imkoniyatlari ham mavjud.
Oliy matematikada d/dx differentsial operatorga o`xshash bir qator yuqori tartibli funksiyalar mavjud. Bu funksiyalar argument sifatida bitta funksiyani qabul qiladi va natija sifatida boshqa funksiyani qaytaradi. Dasturlashdagi yuqori tartibli funksiyalar ham huddi ana shu tamoyil ostida ishlaydi.
Quyidaga kod yordamida sodda funksiya tashkil qilingan va uning haqiqatdan ham ob`ekt ekanligini tekshirib ko`rilgan.
def hello_world():
print('Hello world!')
print(type(hello_world))
class Hello:
pass
print(type(Hello))
print(type(10))

Ko`rish mumkinki, hello_world funksiyasi  klassiga tegishli va demak, u function klassining ob`ekti hisoblanadi. Hozirgina aniqlangan klass type klassiga mansub bo`ladi. Bu holatni keyinroq ochib beriladi.
Endi funksiyaga birinchi toifali ob`ekt sifatida qarab ko`raylik. Funksiyani o`zgaruvchiga qiymat qilib berish mumkin.
def hello_world():
print('Hello world!')
hello = hello_world
print(helllo())

Bu funksiyani boshqa funksiya tarkibida aniqlash ham mumkin:
def qobiq_funcsiya() :
def hello_world():
print('Hello world!')
hello_world()
print(qobiq_funcsiya())

Funksiyalarni boshqa funksiyalarga argument sifatida uzatish yoki fabul qilish mumkin:
def hello_world():
print('Hello world!')
def higher_order(func):
print('Argument sifatida {} '.format(func),'manzildan olindi')
func()
return func
higher_order(hello_world)
Yuqoridagi namunalardan ko`rinib turibdiki, Python tilida funksiyalar bilan ishlash yuqori darajada tashkil qilingan.
Dekoratorlarning ishlash tamoyilini quyidagi sodda dekorator yordamida bayon qilinadi:
def dekorator_funksiya(func):
def wrapper():
print('Qobiq funksiya!')
print(“O’ralayotgan funksiya: {}'.format(func))
print(“O’ralgan funksiya bajarilmoqda...')
func()
print(“Qobiqdan chiqish”)
return wrapper
Bu yerda dekorator_funksiya() funksiyasi dekorator hisoblanadi. U yuqori tartibli funksiya, chunki boshqa funksiyani argument sifatida qabul qilmoqda va o`zi ham funksiya qaytarmoqda; dekorator_funsiya() dektoratori tarkibida boshqa funksiya aniqlagan. Bu funksiya argument‑funksiyani o`rab oladi va uning hulqini o`zgartiradi. Dekorator ana shu qobiqni qaytaradi. Amaldagi dekoratorga namuna:
def dekorator_funksiya(func):
def wrapper():
print('Qobiq funksiya!')
print('Oralayotgan funksiya: {}'.format(func))
print('Oralgan funksiya bajarilmoqda ')
func()
print('Qobiqdan chiqish')
return wrapper
@dekorator_funksiya
def hello_world():
print('Hello world!')
print(hello_world())

Bu yerda hello_world() funksiyasini e`lon qilishdan avval shunchaki @decorator_funksiya ni ko`rsatish bilan uning hulqi o`zgartirilgan. Boshqacha aytganda, @decorator_funksiya ifoda decorator_funksiya() funksiyasiga hello_world argumenti bilan murojaat qilishni ta`minlaydi va shu bilan birga hello_world nomini qaytarilayotgan funksiyaga beradi.
Shunday qilib, dekorator — bu bir funksiya tomonidan boshqa bir funksiya kodiga o`zgartirish kiritmagan holda uning imkoniyatlarini kengaytirish maqsadida o`rab oluvchi funksiyadir.

Download 2,16 Mb.

Do'stlaringiz bilan baham:
1   ...   23   24   25   26   27   28   29   30   ...   56




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
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