Python *args / **kwargs


ULASHISH

*args va **kvarglar

Odatiy bo‘lib, funksiya to‘g‘ri argumentlar soni bilan chaqirilishi kerak.

Biroq, ba’zida siz funksiyangizga qancha argumentlar berilishini bilmasligingiz mumkin.

*args va **kwargs funksiyalarga noma’lum sonli argumentlarni qabul qilish imkonini beradi.


Ixtiyoriy sondagi argumentlar - *args

Agar funksiyangizga qancha argument o‘tkazilishini bilmasangiz, parametr nomidan oldin * belgisini qo‘shing.

Shunday qilib, funksiya bir qator argumentlarni oladi va mos ravishda elementlarga kirishi mumkin:

Misol

Har qanday miqdordagi argumentlarni qabul qilish uchun *args dan foydalanish:

def my_function(*kids):   print("The youngest child is " + kids[2]) my_function("Emil", "Tobias", "Linus")
O‘zingiz sinab ko‘ring »

Python hujjatlarida o‘zboshimchalik bilan argumentlar ko‘pincha *args ga qisqartiriladi.


*args nima?

*args parametri funksiyaga istalgan sonli pozitsion argumentlarni qabul qilish imkonini beradi.

Funksiya ichidaargsbarcha o‘tkazilgan argumentlarni o‘z ichiga olgan kortejga aylanadi:

Misol

*args dan individual argumentlarga kirish:

def my_function(*args):   print("Type:", type(args))   print("First argument:", args[0])   print("Second argument:", args[1])   print("All arguments:", args) my_function("Emil", "Tobias", "Linus")
O‘zingiz sinab ko‘ring »


Muntazam argumentlar bilan *arglardan foydalanish

Oddiy parametrlarni *args bilan birlashtira olasiz.

Regular parameters must come before *args:

Misol

def my_function(greeting, *names):   for name in names:     print(greeting, name) my_function("Hello", "Emil", "Tobias", "Linus")
O‘zingiz sinab ko‘ring »

Ushbu misolda "Hello"greetingga tayinlangan, qolganlari esanamesda to‘plangan.


*args bilan amaliy misol

*args moslashuvchan funksiyalarni yaratmoqchi bo‘lganingizda foydalidir:

Misol

Har qanday miqdordagi qiymatlar yig‘indisini hisoblaydigan funksiya:

def my_function(*numbers):   total = 0   for num in numbers:     total += num   return total print(my_function(1, 2, 3)) print(my_function(10, 20, 30, 40)) print(my_function(5))
O‘zingiz sinab ko‘ring »

Misol

Maksimal qiymatni toping:

def my_function(*numbers):   if len(numbers) == 0:     return None   max_num = numbers[0]   for num in numbers:     if num > max_num:       max_num = num   return max_num print(my_function(3, 7, 2, 9, 1))
O‘zingiz sinab ko‘ring »

Ixtiyoriy sondagi kalit so‘zli argumentlar - **kwargs

Agar funksiyangizga qancha kalit so‘z argumentlari o‘tkazilishini bilmasangiz, parametr nomidan oldin ikkita yulduzcha ** qo‘shing.

Shunday qilib, funksiya argumentlar lug‘atini oladi va shunga mos ravishda elementlarga kirishi mumkin:

Misol

Har qanday miqdordagi kalit so‘z argumentlarini qabul qilish uchun **kwargs dan foydalanish:

def my_function(**kid):   print("His last name is " + kid["lname"]) my_function(fname = "Tobias", lname = "Refsnes")
O‘zingiz sinab ko‘ring »

O‘zboshimchalik bilan kalit so‘z argumentlari ko‘pincha Python hujjatlarida **kwargs ga qisqartiriladi.


**kvargs nima?

**kwargs parametri funksiyaga istalgan sonli kalit so‘z argumentlarini qabul qilish imkonini beradi.

Funksiya ichidakwargsbarcha kalit so‘z argumentlarini o‘z ichiga olgan dictionaryga aylanadi:

Misol

**kwargs dan qiymatlarga kirish:

def my_function(**myvar):   print("Type:", type(myvar))   print("Name:", myvar["name"])   print("Age:", myvar["age"])   print("All data:", myvar) my_function(name = "Tobias", age = 30, city = "Bergen")
O‘zingiz sinab ko‘ring »

Muntazam argumentlar bilan **kwargsdan foydalanish

Oddiy parametrlarni **kwargs bilan birlashtira olasiz.

Regular parameters must come before **kwargs:

Misol

def my_function(username, **details):   print("Username:", username)   print("Additional details:")   for key, value in details.items():     print(" ", key + ":", value) my_function("emil123", age = 25, city = "Oslo", hobby = "coding")
O‘zingiz sinab ko‘ring »

*args va **kvarglarni birlashtirish

Xuddi shu funksiyada *args va **kwargs dan foydalanishingiz mumkin.

tartib quyidagicha bo‘lishi kerak:

  1. muntazam parametrlar
  2. *args
  3. **kwargs

Misol

def my_function(title, *args, **kwargs):   print("Title:", title)   print("Positional arguments:", args)   print("Keyword arguments:", kwargs) my_function("User Info", "Emil", "Tobias", age = 25, city = "Oslo")
O‘zingiz sinab ko‘ring »

Argumentlarni ochish

* va ** operatorlari ro‘yxat yoki lug‘atni alohida argumentlarga ochish (kengaytirish) uchun funksiyalarni chaqirishda ham foydalanish mumkin.

* bilan ro‘yxatlarni ochish

Agar sizda listda saqlangan qiymatlar bo‘lsa, ularni alohida argumentlarga ochish uchun * dan foydalanishingiz mumkin:

Misol

Ro‘yxatni argumentlarga ochish uchun * dan foydalaning:

def my_function(a, b, c):   return a + b + c numbers = [1, 2, 3] result = my_function(*numbers) # Same as: my_function(1, 2, 3) print(result)
O‘zingiz sinab ko‘ring »

Lug‘atlarni ** bilan ochish

Agar sizda kalit so‘z argumentlari dictionaryda saqlangan bo‘lsa, ularni ochish uchun **dan foydalanishingiz mumkin:

Misol

Lug‘atni kalit so‘z argumentlariga ochish uchun ** dan foydalaning:

def my_function(fname, lname):   print("Hello", fname, lname) person = {"fname": "Emil", "lname": "Refsnes"} my_function(**person) # Same as: my_function(fname="Emil", lname="Refsnes")
O‘zingiz sinab ko‘ring »

Esda tuting: argumentlarni to‘plash uchun funksiya ta’riflarida * va **dan foydalaning va argumentlarni ochish uchun funksiya chaqiruvlarida foydalaning.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!