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)