Skip to content

Python - Funksiyalar ​

Funksiya ​

Funksiya faqat chaqirilganda ishlaydigan kod blokidir.

Siz funksiyaga parametrlar deb ataladigan ma'lumotlarni uzatishingiz mumkin.

Funksiya natija sifatida ma'lumotlarni qaytarishi mumkin.

Funksiya Yaratish ​

Python'da funksiya def kalit so'zi yordamida aniqlanadi:

Misol ​

python
def mening_funksiyam():
    print("Funksiyadan salom")

Funksiyani Chaqirish ​

Funksiyani chaqirish uchun funksiya nomidan keyin qavslar ishlatiladi:

Misol ​

python
def mening_funksiyam():
    print("Funksiyadan salom")

mening_funksiyam()

Argumentlar ​

Funksiyalarga ma'lumotlar argumentlar sifatida uzatilishi mumkin.

Argumentlar funksiya nomidan keyin qavslar ichida ko'rsatiladi. Siz xohlagancha argument qo'shishingiz mumkin, faqat ularni vergul bilan ajrating.

Quyidagi misolda bir argumentli (ism) funksiya mavjud. Funksiya chaqirilganda, biz ismni uzatamiz va u funksiya ichida to'liq ismni chop etish uchun ishlatiladi:

Misol ​

python
def mening_funksiyam(ism):
    print(ism + " Refsnes")

mening_funksiyam("Emil")
mening_funksiyam("Tobias")
mening_funksiyam("Linus")

Argumentlar ko'pincha Python hujjatlarida args deb qisqartiriladi.

Parametrlar yoki Argumentlar? ​

Parametr va argument atamalari bir xil narsa uchun ishlatilishi mumkin: funksiyaga uzatiladigan ma'lumotlar.

Funksiya nuqtai nazaridan:

  • Parametr funksiya ta'rifida qavslar ichida keltirilgan o'zgaruvchidir.
  • Argument funksiya chaqirilganda unga yuboriladigan qiymatdir.

Argumentlar Soni ​

Odatiy holatda, funksiya to'g'ri argumentlar soni bilan chaqirilishi kerak. Ya'ni, agar funksiyangiz 2 ta argumentni kutsa, siz funksiyani 2 ta argument bilan chaqirishingiz kerak, na ko'p, na kam.

Misol ​

Bu funksiya 2 ta argumentni kutadi va 2 ta argument oladi:

python
def mening_funksiyam(ism, familiya):
    print(ism + " " + familiya)

mening_funksiyam("Emil", "Refsnes")

Agar funksiyani 1 yoki 3 ta argument bilan chaqirsangiz, xatolik olasiz:

Misol ​

Bu funksiya 2 ta argumentni kutadi, lekin faqat 1 tasini oladi:

python
def mening_funksiyam(ism, familiya):
    print(ism + " " + familiya)

mening_funksiyam("Emil") # Xatolik

O'zboshimcha Argumentlar, *args ​

Agar funksiyangizga nechta argument uzatilishi noma'lum bo'lsa, parametr nomidan oldin * qo'shing.

Bu usulda funksiya argumentlar tupini oladi va ularga mos ravishda kirishi mumkin:

Misol ​

Argumentlar soni noma'lum bo'lsa, parametr nomidan oldin * qo'shing:

python
def mening_funksiyam(*bolalar):
    print("Eng kichik bola " + bolalar[2])

mening_funksiyam("Emil", "Tobias", "Linus")

O'zboshimcha Argumentlar ko'pincha Python hujjatlarida *args deb qisqartiriladi.

Kalit So'z Argumentlari ​

Argumentlarni kalit = qiymat sintaksisi bilan ham yuborishingiz mumkin.

Bu usulda argumentlar tartibi ahamiyatsiz bo'ladi.

Misol ​

python
def mening_funksiyam(bola3, bola2, bola1):
    print("Eng kichik bola " + bola3)

mening_funksiyam(bola1="Emil", bola2="Tobias", bola3="Linus")

Kalit So'z Argumentlari ko'pincha Python hujjatlarida kwargs deb qisqartiriladi.

O'zboshimcha Kalit So'z Argumentlari, **kwargs ​

Agar funksiyangizga nechta kalit so'z argumentlari uzatilishi noma'lum bo'lsa, parametr nomidan oldin ikkita yulduzcha ** qo'shing.

Bu usulda funksiya argumentlar lug'atini oladi va ularga mos ravishda kirishi mumkin:

Misol ​

Kalit so'z argumentlari soni noma'lum bo'lsa, parametr nomidan oldin ** qo'shing:

python
def mening_funksiyam(**bola):
    print("Uning familiyasi " + bola["familiya"])

mening_funksiyam(ism="Tobias", familiya="Refsnes")

O'zboshimcha Kalit So'z Argumentlari ko'pincha Python hujjatlarida **kwargs deb qisqartiriladi.

Standart Parametr Qiymati ​

Quyidagi misol standart parametr qiymatidan qanday foydalanishni ko'rsatadi.

Agar funksiyani argumentsiz chaqirsak, u standart qiymatni ishlatadi:

Misol ​

python
def mening_funksiyam(davlat="Norvegiya"):
    print("Men " + davlat + "danman")

mening_funksiyam("Shvetsiya")
mening_funksiyam("Hindiston")
mening_funksiyam()
mening_funksiyam("Braziliya")

Ro'yxatni Argument Sifatida Uzatish ​

Funksiyaga har qanday ma'lumot turi argumentini yuborishingiz mumkin (satr, raqam, ro'yxat, lug'at va hokazo), va u funksiya ichida xuddi shu ma'lumot turi sifatida qabul qilinadi.

Masalan, agar ro'yxatni argument sifatida yuborsangiz, u funksiyaga yetib kelganda ham ro'yxat bo'lib qoladi:

Misol ​

python
def mening_funksiyam(taomlar):
    for x in taomlar:
        print(x)

mevalar = ["olma", "banan", "gilos"]

mening_funksiyam(mevalar)

Qiymatlarni Qaytarish ​

Funksiyaning qiymat qaytarishi uchun return iborasidan foydalaning:

Misol ​

python
def mening_funksiyam(x):
    return 5 * x

print(mening_funksiyam(3))
print(mening_funksiyam(5))
print(mening_funksiyam(9))

Pass Ibora ​

Funksiya ta'riflari bo'sh bo'la olmaydi, lekin agar biron sababga ko'ra ichida hech narsa bo'lmagan funksiya ta'rifi bo'lsa, xatolikni oldini olish uchun pass iborasini qo'ying.

Misol ​

python
def mening_funksiyam():
    pass

Faqat Pozitsion Argumentlar ​

Siz funksiyaning faqat pozitsion argumentlar yoki faqat kalit so'z argumentlari ga ega bo'lishini belgilashingiz mumkin.

Funksiyaning faqat pozitsion argumentlarga ega bo'lishini ko'rsatish uchun argumentlardan keyin , / qo'shing:

Misol ​

python
def mening_funksiyam(x, /):
    print(x)

mening_funksiyam(3)

, / bo'lmasa, funksiya pozitsion argumentlarni kutsa ham kalit so'z argumentlaridan foydalanishga ruxsat beriladi:

Misol ​

python
def mening_funksiyam(x):
    print(x)

mening_funksiyam(x=3)

Lekin , / qo'shilsa, kalit so'z argumentini yuborsangiz xatolik olasiz:

Misol ​

python
def mening_funksiyam(x, /):
    print(x)

mening_funksiyam(x=3) # Xatolik

Faqat Kalit So'z Argumentlari ​

Funksiyaning faqat kalit so'z argumentlarga ega bo'lishini ko'rsatish uchun argumentlardan oldin *, qo'shing:

Misol ​

python
def mening_funksiyam(*, x):
    print(x)

mening_funksiyam(x=3)

*, bo'lmasa, funksiya kalit so'z argumentlarini kutsa ham pozitsion argumentlardan foydalanishga ruxsat beriladi:

Misol ​

python
def mening_funksiyam(x):
    print(x)

mening_funksiyam(3)

Lekin *, bilan pozitsion argument yuborsangiz xatolik olasiz:

Misol ​

python
def mening_funksiyam(*, x):
    print(x)

mening_funksiyam(3) # Xatolik

Pozitsion va Kalit So'z Argumentlarini Birlashtirish ​

Siz ikkala argument turini bir funksiyada birlashtirishingiz mumkin.

/ dan oldingi har qanday argument faqat pozitsion, *, dan keyingi har qanday argument faqat kalit so'zdir.

Misol ​

python
def mening_funksiyam(a, b, /, *, c, d):
    print(a + b + c + d)

mening_funksiyam(5, 6, c=7, d=8)

Rekursiya ​

Python shuningdek, funksiya rekursiyasini qabul qiladi, ya'ni aniqlangan funksiya o'zini o'zi chaqira oladi.

Rekursiya matematika va dasturlashda keng tarqalgan tushunchadir. Bu funksiyaning o'zini o'zi chaqirishi deganidir. Bu ma'lumotlarni aylanib natijaga erishish imkonini beradi.

Dasturchi rekursiya bilan juda ehtiyot bo'lishi kerak, chunki hech qachon tugamaydigan yoki juda ko'p xotira yoki protsessor quvvatini ishlatadigan funksiyani yozish oson bo'lishi mumkin. Ammo to'g'ri yozilganda rekursiya juda samarali va matematik jihatdan nafis dasturlash yondashuvi bo'lishi mumkin.

Bu misolda uchburchak_rekursiya() o'zini o'zi chaqiradigan ("rekursiv") funksiyadir. Biz k o'zgaruvchisini ma'lumot sifatida ishlatamiz, u har rekursiyada 1 ga kamayadi. Rekursiya shart 0 dan katta bo'lmaganda (ya'ni 0 bo'lganda) tugaydi.

Yangi dasturchi uchun buni qanday ishlashini tushunish biroz vaqt olishi mumkin, buni sinab ko'rish va o'zgartirish orqali eng yaxshi aniqlash mumkin.

Misol ​

Rekursiya Misoli:

python
def uchburchak_rekursiya(k):
    if k > 0:
        natija = k + uchburchak_rekursiya(k - 1)
        print(natija)
    else:
        natija = 0
    return natija

print("Rekursiya Misol Natijalari:")
uchburchak_rekursiya(6)

Python funksiyalari mavzusida test

Savol 1 / 9

Python dasturlash tilida funksiya yaratish uchun qaysi kalit so'z ishlatiladi?