Funksiyalar bilan tanishish
Funksiya — muayyan vazifani bajaruvchi kod bloki.
Aytaylik, bizga doira chizib, uni bo'yaydigan dastur yaratish kerak. Biz bu muammoni yechish uchun ikkita funksiya yaratishimiz mumkin:
Murakkab muammoni kichikroq qismlarga bo'lish dasturimizni tushunish va qayta ishlatishni osonlashtiradi.
Keling, birinchi funksiyamizni yarataylik.
def greet():
print('Hello World!')
Mana dasturning turli qismlari:
Python funksiyasini yaratish

Bu yerda biz Hello World! deb chop etuvchi greet() nomli oddiy funksiya yaratdik.
Eslatma: Funksiya yozayotganda, kod qatori boshidagi bo'shliqlar bo'lgan chekinishga (indentation) e'tibor bering.
Yuqoridagi kodda, print() operatori funksiya tanasining bir qismi ekanligini ko'rsatish uchun chekingan holda yozilgan, bu esa funksiyaning e'lonini uning tanasidan ajratib turadi.
Yuqoridagi misolda biz greet() nomli funksiyani e'lon qildik.
def greet():
print('Hello World!')
Agar yuqoridagi kodni ishga tushirsak, hech qanday natija olmaymiz.
Buning sababi, funksiya yaratish uning ichidagi kodni bajarayotganimizni anglatmaydi. Bu shuni anglatadiki, agar xohlasak foydalanishimiz uchun kod tayyor turibdi.
Bu funksiyadan foydalanish uchun, funksiyani chaqirishimiz kerak.
Funksiyani chaqirish
greet()
Misol: Python funksiyasini chaqirish
def greet():
print('Hello World!')
# funksiyani chaqirish
greet()
print('Outside function')
Natija
Hello World!
Outside function
Yuqoridagi misolda biz greet() nomli funksiya yaratdik. Mana dastur boshqaruvi qanday oqadi:
Python funksiyasining ishlashi

Bu yerda,
greet() funksiyasi chaqirilganda, dasturning boshqaruvi funksiya e'loniga o'tadi.Argumentlar — funksiyaga beriladigan kiritmalar (input).
def greet(name):
print("Hello", name)
# argument uzatish
greet("John")
1-namuna natija
Hello John
Bu yerda biz greet() funksiyasiga argument sifatida 'John'ni uzatdik.
Har bir chaqiruvda turli argumentlarni uzatishimiz mumkin, bu funksiyani qayta ishlatiladigan va dinamik qiladi.
Keling, funksiyani boshqa argument bilan chaqiramiz.
greet("David")
2-namuna natija
Hello David
Misol: Ikkita sonni qo'shuvchi funksiya
# ikkita argumentga ega funksiya
def add_numbers(num1, num2):
sum = num1 + num2
print("Sum: ", sum)
# ikkita qiymat bilan funksiyani chaqirish
add_numbers(5, 4)
Natija
Sum: 9
Yuqoridagi misolda biz num1 va num2 argumentlariga ega add_numbers() nomli funksiya yaratdik.
Argumentlarga ega Python funksiyasi

Parametrlar
Parametrlar — funksiya e'lonida qavslar ichida sanab o'tilgan o'zgaruvchilar. Ular funksiya chaqirilganda qabul qila oladigan ma'lumot uchun joy egallovchi (placeholder) vazifasini bajaradi.
Parametrlarni funksiya qabul qilishni kutayotgan ma'lumot turini belgilaydigan chizma (blueprint) deb tasavvur qiling.
def print_age(age): # age — parametr
print(age)
Bu misolda print_age() funksiyasi ageni o'zining kiritmasi sifatida oladi. Biroq, bu bosqichda haqiqiy qiymat hali belgilanmagan.
age parametri shunchaki funksiya chaqirilganda beriladigan aniq qiymatni kutib turgan joy egallovchi.
Argumentlar
Argumentlar — funksiyani chaqirganimizda unga uzatadigan haqiqiy qiymatlar.
Funksiya bajarilganda argumentlar parametrlarning o'rnini egallaydi.
print_age(25) # 25 — argument
Bu yerda, funksiya chaqirilganda, 25 argumenti funksiyaga uzatiladi.
Funksiyadan qiymatni return operatori yordamida qaytaramiz.
# funksiya e'loni
def find_square(num):
result = num * num
return result
# funksiyani chaqirish
square = find_square(3)
print('Square:', square)
Natija
Square: 9
Yuqoridagi misolda biz find_square() nomli funksiya yaratdik. Funksiya sonni qabul qiladi va uning kvadratini qaytaradi.
Pythonda funksiyalarning ishlashi

Eslatma: return operatori shuningdek funksiya tugaganligini ham bildiradi. returndan keyingi hech qanday kod bajarilmaydi.
pass operatori kelajakdagi kod uchun joy egallovchi vazifasini bajaradi, bo'sh kod bloklaridan kelib chiqadigan xatolarning oldini oladi.
U odatda kod rejalashtirilgan, ammo hali yozilmagan joyda ishlatiladi.
def future_function():
pass
# bu hech qanday amal yoki xatoliksiz bajariladi
future_function()
Eslatma: Ko'proq bilish uchun Python Pass Statement sahifasiga tashrif buyuring.
Python bizning dasturimizda to'g'ridan-to'g'ri ishlatilishi mumkin bo'lgan ba'zi tayyor (built-in) funksiyalarni taqdim etadi.
Bizga funksiyani yaratish shart emas, ularni shunchaki chaqirishimiz kifoya.
Ba'zi Python kutubxona funksiyalari:
print() - qo'shtirnoq ichidagi satrni chop etadisqrt() - sonning kvadrat ildizini qaytaradipow() - sonning darajasini qaytaradiBu kutubxona funksiyalari modul ichida belgilangan. Ulardan foydalanish uchun, dasturimiz ichiga modulni qo'shishimiz kerak.
Masalan, sqrt() math moduli ichida belgilangan.
Eslatma: Kutubxona funksiyalari haqida ko'proq bilish uchun, iltimos Python Library Functions sahifasiga tashrif buyuring.
Misol: Python kutubxona funksiyasi
import math
# sqrt kvadrat ildizni hisoblaydi
square_root = math.sqrt(4)
print("Square Root of 4 is",square_root)
# pow() darajani hisoblaydi
power = pow(2, 3)
print("2 to the power 3 is",power)
Natija
Square Root of 4 is 2.0
2 to the power 3 is 8
Bu yerda biz sqrt() va pow() kutubxona funksiyalaridan foydalanish uchun math modulini import qildik.
Pythonda funksiyalar ikki toifaga bo'linadi: foydalanuvchi belgilagan (user-defined) funksiyalar va standart kutubxona (standard library) funksiyalari. Bu ikkovi bir necha jihatdan farq qiladi:
Foydalanuvchi belgilagan funksiyalar
Bular biz o'zimiz yaratadigan funksiyalar. Ular o'zimiz mo'ljallagan muayyan vazifalar uchun mo'ljallangan o'z maxsus asboblarimizga o'xshaydi.
Ular Pythonning standart asboblar to'plamining bir qismi emas, bu esa bizga ularni o'z ehtiyojlarimizga aynan mos moslashtirishga, kodimizga shaxsiy uslub qo'shishga erkinlik beradi.
Standart kutubxona funksiyalari
Bularni Pythonning oldindan tayyorlangan sovg'alari deb tasavvur qiling. Ular Python bilan birga keladi, foydalanishga tayyor.
Bu funksiyalar matematika, fayl amallari, satrlar bilan ishlash kabi keng ko'lamdagi keng tarqalgan vazifalarni qamrab oladi.
Ular Python jamoasi tomonidan sinovdan o'tkazilgan, bu esa samaradorlik va ishonchlilikni ta'minlaydi.
Python funksiyalarga standart argument qiymatlariga ega bo'lish imkonini beradi. Standart argumentlar funksiya chaqirilganda bu parametrlarga aniq qiymat uzatilmagan holatlarda ishlatiladi.
Keling, bir misolga qaraymiz.
def greet(name, message="Hello"):
print(message, name)
# funksiyani ikkala argument bilan chaqirish
greet("Alice", "Good Morning")
# funksiyani faqat bitta argument bilan chaqirish
greet("Bob")
Natija
Good Morning Alice
Hello Bob
Bu yerda messagening standart qiymati Hello. greet() faqat bitta argument bilan chaqirilganda, message o'zining standart qiymatidan foydalanadi.
Eslatma: Funksiyadagi standart argumentlar haqida ko'proq bilish uchun, iltimos Python Function Arguments sahifasiga tashrif buyuring.
Biz *args va **kwargs maxsus belgilari yordamida ixtiyoriy sondagi argumentlarni boshqarishimiz mumkin.
*Funksiyalarda args
*args dan foydalanish funksiyaga istalgan sondagi pozitsion argumentlarni qabul qilish imkonini beradi.
# istalgan sondagi argumentlarni qo'shuvchi funksiya
def add_all(*numbers):
return sum(numbers)
# istalgan sondagi argumentlarni uzatish
print(add_all(1, 2, 3, 4))
Natija
10
**Funksiyalarda kwargs
**kwargs dan foydalanish funksiyaga istalgan sondagi kalit so'zli (keyword) argumentlarni qabul qilish imkonini beradi.
# kalit so'zli argumentlarni chop etuvchi funksiya
def greet(**words):
for key, value in words.items():
print(f"{key}: {value}")
# istalgan sondagi kalit so'zli argumentlarni uzatish
greet(name="John", greeting="Hello")
Natija
name: John
greeting: Hello
Ko'proq bilish uchun Python *args and **kwargs sahifasiga tashrif buyuring.