Funksiyalar

Dasturlash tilida funksiyalar

Oldingi mavzularda biz bir qator funksiyalarni shunchaki ishlatib ketdik. Keling endi ular bilan batafsil tanishsakda, keyin boshqa zarur funksiyalardan bir nechtasini o’rganib chiqsak.

Funksiya - deb dasturlash tillarida dasturning ma’lum bir bo’lagiga aytiladi va biz undan dasturning asosiy qismida bir necha mart qayta-qayta chaqirib ishlatishimiz mumkin bo’ladi. Ya’ni bir marta ma’lum bir amal yoki amallar ketma-ketligini yozib qo’yib, undan takror ishlatishimiz mumkin bo’ladi. Bundan tashqari funksiyalar bir qancha qulayliklarni bizga taqdim etadi. Bular haqida ushbu kursda kamroq so’z yuritamiz, chunki kursimiz asosan Sun’iy Intellekt uchun. Odatda har bir dasturlash tili bir qator birlamchi funksiyalar to’plamini o’zida saqlaydi. Quyida biz ulardan zarurlarini o’rganamiz.

Funksiyalarni chaqirish uchun quyidagi sinkasisdan foydalanamiz: <funksiya nomi>(<funskiya parameterlari>) - ya’ni birinchi bizga zarur bo’lgan funksiya nomini yozib, keyin qavs ichiga shu funksiyani ishlatish uchun zarur bo’lgan parameter yoki parameterlar vergul bilan yozib chiqiladi. Keling print funskiyasining ishlatilishini ber eslaylik:

[1]:
age = 14
fam = "Abdusamatov"
ism = 'Doniyor'
vazn = 78.5
print(fam, ism, age, vazn)
Abdusamatov Doniyor 14 78.5

Yuqoridagi dastur matnida biz print nomli funksiya chaqirdik va uning parameterlariga 4 to’rta o’zgaruvchini uzatdik. Natijada esa bu funskiya uzatilgan parameterlarni chop qildi. Quyida ushbu funksiyalar bilan batafsil tanishib chiqamiz.

Biz shu vaqtgacha faqat ikkita funksiya bilan tanishdik. Shunda ham, faqat ular bilan qisman ishlashni o’rgandik. Shuning uchun ushbu bo’limda, funksiyaning qiymat qaytarishini va ularning natijalarini boshqa o’zgaruvchi saqlab, keyinchalik ulardan foydalanishni o’rganamiz. Python dasturlash tilida har bir funksiya qiymat qaytaradi. Lekin, odatada, dasturlash tillarida biz funksiyalar qiymat qaytarishi yoki qaytarmasligiga qarab ikki turga ajratamiz. Pythonda esa bu holat faqat None o’zgarmas qiymati bilan amalga oshiriladi, ya’ni shunchaki None qiymatini qaytaradi agar oshkor ravishda qiymat qaytarish buyrug’i berilmagan bo’lsa. Bu kabi ma’lumotlar bilan keyinchalik foydalanuvchi tomonidan aniqlangan funksiyalar mavzusida tanishamiz.

Hozir keling bu qismlarga chuqur kirishmasdan, uning o’rniga, sodda misollar bilan mavzuni tushunaylik. Bu kabi holatlarni esa kelgusida ko’rib chiqaylik. Keling type funksiyasi qaytargan qiymatni, biror o’zgaruvchiga yozaylikda, keyin uni print funksiyasi yordamida chop qilaylik quyidagi kodda berilgan kabi.

[2]:
# age o'zgaruvchisiga 25 yozish
age = 25
# age o'zgaruvchisi turini olish
age_type = type(age)
# va natijani chop qilish
print(age_type)
<class 'int'>

input funksiyasi

Ushbu funksiyani bir qator funksiyalarda ishlatib ulgirdik. Bu funksiya foydalanuvchiga qiymat kiritish uchun maydon hosil qiladi va uni kiritishini kutib, kiritilgan qiymatni uni chaqirgan joyiga qaytaradi. Ushbu qaytariluvchi qiymatning turi hard doim matn str bo’ladi. Agar biz uni boshqa turlarga o’tkazmoqchi bo’lsak, biz shu turning funksiyasini chaqirishimiz zarur bo’ladi. Ushbu funksiya faqat bitta qiymat qabul qilib, foydalanuvchiga qanday qiymat kiritish haqida qo’shimcha xabar chop qiladi va bu parameter har doim str turida bo’lishi zarur. Quyida bir qator misollarni qarab chiqamiz.

[1]:
age = int(input('Yoshi kiriting: '))
print(age)
34

Yuqoridagi kodda biz input funksiyasini to’g’ridan-to’g’iri int funskiyasi parameteri sifatida ishlatayabmiz. Bunday ichma-ich joylashishlar dastur natijasiga ta’sir qilmaydi. Quyida shu kodning sal boshqacharoq, ya’ni input alohida yozilgan ko’rinishi qaraymiz.

[2]:
# 1-chi yoshni satr ko'rinishida
# input funksiyasidan yuklab olamiz.
age_str = input('Yoshi kiriting: ')
# o'zgaruvchi nomidagi str boshqa bo'lishi ham mumkin
age = int(age_str)
print(age)
34

Turlarni o’zgartirish funksiyalari

Biz asosan shu vaqtgacha o’rgangan turlarimiz ustida bunday funksiyalarni ishlatib ko’ramiz. Odatda ular bir-birdan katta farq qilmaydi.

  1. int - funksiyasi ham o’zgaruvchi turi ham funksiya hisoblanib [1], agar biz uni funksiya sifatida chaqirib parameteriga joiz qiymatni kiritsak unda u bizga qiymatni int butun son ko’rinishidagisini qaytaradi. Oldingi kodda bunga sodda misol ko’rdik. Ushbu funksiya yana bitta qo’shimcha base parameterga ega bo’lib, u parameter kiritilayotgan qiymatning qaysi sanoq sistemasidagi ekanligini bildirish uchun ishlatiladi. Quyida unga sodda misol qilib, ikkilik sanoq sistemasidagi berilgan matnni int turiga [2] o’tkazamiz.

[4]:
# bu 4 sonidir
a_2 = '0b100'
a = int(a_2, base=2)
print(a)
4

Yuqorida biz 0b100 matnini 10 lik sanoq sistemasiga o’tkazdik va uning qiymati 4 bo’ldi. Ushbu satr boshidagi 0b (nol va b harfi) ushbu soning ikkilik sanoq sistemasidagi ekanligini bildir edi.

  1. float - funskiyasi ham o’zgaruvchi turi ham funksiya hisoblanib, agar biz uni funksiya sifatida chaqirib joiz parameteriga qiymat berishimiz zarur. Masalan, quyida str dan float turiga o’tish keltirilgan.

[1]:
weight = float(input("Vazningizni kiriting: "))
print('Sizning vazningiz: ', weight)
Sizning vazningiz:  67.8

Agar biz . o’rniga boshqa belgi, masalan, , ishlatsak xatolik beradi.

[2]:
weight = float(input("Vazningizni kiriting: "))
print('Sizning vazningiz: ', weight)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[2], line 1
----> 1 weight = float(input("Vazningizni kiriting: "))
      2 print('Sizning vazningiz: ', weight)

ValueError: could not convert string to float: '67,8'

Undan tashqari soning exponenta ko’rinishi orqali ham str turida berish mumkin. Masalan, yuqoridagi misolda 678e-1 ni kiritsak ham bir xil natija olamiz. Bundan tashqari butun sonlarni ham haqiqiy songa yoki haqiqiy sonlarni butun sonlarga o’tkazish mumkin mos funskiyalardan foydalangan holda. Namuna uchun:

[4]:
# inson vazn
weight = int('678e-1')
print(weight)
# inson bo'yi
height = float(178)
print(height)
67
178.0

Natijalardagi asosiy farq bu chop qilishda ochiq ko’rinadi, ya’ni 67.8 haqiqiy sonini int turiga o’tkazish uning haqiqiy qismini olib tashlaydi. int turidagi 178 soni float ga o’tkazish esa unga chop qilgan haqiqiy qism qo’shishidir, lekin saqlashda ham xotiradan boshqacha joy ajratiladi.

Ko’p ishlatiladigan Python funksiyalari

Quyida biz bir nechta yuqoridagi funksiyalarga o’xshash funksiyalarni jadvalda qisqacha ta’rifi bilan keltirdik. Bu kabi funksiyalar ko’p bo’lgani uchun o’tilgan mavzugacha bo’lgan funksiyalarni keltiramiz, qoganlari mavzularni tushuntirish asnosida o’rganib boriladi.

Funksiya

Tasnifi

abs()

Berilgan parameterni musbat songa o’tkazadi. Odatda biz bu narsani absolyut qiymat deb nomlaymiz. abs(-5) ifodasi 5 qiymat qaytaradi.

bin()

Qiymatni ikkilik sonoq sistemasiga o’tkazadi.

bool()

Qiymatni mantiqiy turga o’tkazadi.

chr()

int qiymatiga mos belginini qaytaradi. Masalan, chr(65) A harfini qaytaradi, chunki A harfining kodi 65.

hex()

int qiymatni 16 sanoq sistemasiga o’tkazadi.

id()

Obyektning (o’zgaruvchining) idsini qaytaradi.

round()

Haqiqiy soni berilgan aniqlikgacha yaxlitlaydi.

pow()

Berilgan soni ko’rsatilgan darajaga ko’taradi. Masalan, pow(4, 2) 16 bo’ladi.