Python *args / **kwargs
*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:
- muntazam parametrlar
- *args
- **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!
