Funktsiyani chaqirishda *args va **kwargs dan foydalanish
Funktsiyani *args va **kwargs yordamida chaqirishni o'ylab ko'ring. Aytaylik, bizda shunday kichik funksiya bor:
def test_args_kwargs ( arg1 , arg2 , arg3 ):
chop etish ( "arg1:" , arg1 )
chop etish ( "arg2:" , arg2 )
chop etish ( "arg3:" , arg3 )
Biz unga argumentlarni yuborish uchun *args yoki **kwargs dan foydalanishimiz mumkin. Buni qanday qilamiz:
# Avval *args bilan
>>> args = ( "ikki" , 3 , 5 )
>>> test_args_kwargs ( * args )
arg1 : ikkita
arg2 : 3
arg3 : 5
# Endi **kwargs bilan:
>>> kwargs = { "arg3" : 3 , "arg2" : "ikki" , "arg1" : 5 }
>>> test_args_kwargs ( ** kwargs )
arg1 : 5
arg2 : ikkita
arg3 : 3
Agar funktsiyada uchta usuldan foydalanmoqchi bo'lsangiz, unda tartib quyidagicha bo'lishi kerak:
some_func ( fargs , * args , ** kwargs )
Ulardan qachon foydalanish kerak?
Hamma narsa sizning ehtiyojlaringizga bog'liq. *args va **kwargsning eng keng tarqalgan qo'llanilishi dekorativlarni yozishda (boshqa bobda dekorativlar haqida batafsilroq). Bundan tashqari, ushbu texnikani "maymun yamoqlari" uchun ishlatish mumkin. "Maymun yamoq" deganda dasturni bajarish jarayonida kodni o'zgartirish tushuniladi. Aytaylik, bizda API ga kiradigan va javob ma'lumotlarini qaytaradigan usulga ega sinf mavjud . get_infoUshbu usulni sinab ko'rish uchun biz API chaqiruvini almashtirishimiz va ma'lum test ma'lumotlarini sun'iy ravishda qaytarishimiz mumkin. Masalan:
ba'zi sinflarni import qilish
def get_info ( self , * args ):
"test ma'lumotlarini" qaytarish
ba'zi sinf . get_info = get_info
Do'stlaringiz bilan baham: |