Python-da siyahılar (massivlər), tuplelər və lüğətlər genişləndirilə (paketdən çıxarıla) və onların müvafiq elementləri funksiya arqumentləri kimi birlikdə ötürülə bilər.
Funksiyanı çağırarkən siyahılar və dəstlər üçün * və lüğətlər üçün ** ilə arqumenti göstərin. Ulduzların sayına diqqət yetirin *.
Aşağıdakı təfərrüatlar burada təsvir edilmişdir.
- * (bir ulduz) ilə siyahını və ya dəsti genişləndirin (paketdən çıxarın)
- Defolt arqumentləri olan funksiyalar üçün
- Dəyişən uzunluqlu arqumentləri olan funksiyalar üçün
- Lüğəti ** (iki ulduz) ilə genişləndirin (açın)
- Defolt arqumentləri olan funksiyalar üçün
- Dəyişən uzunluqlu arqumentləri olan funksiyalar üçün
Funksiyaları təyin edərkən Python funksiyalarının əsas istifadəsi, standart arqumentlər və *,** ilə dəyişən uzunluq arqumentləri üçün aşağıdakı məqaləyə baxın.
- ƏLAQƏLİ:Python funksiyalarında standart arqumentlərdən necə istifadə etmək və qeyd etmək olar
- ƏLAQƏLİ:Python-da dəyişən uzunluqlu arqumentlərdən necə istifadə etmək olar(
*args
,**kwargs
)
* (bir ulduz) ilə siyahını və ya dəsti genişləndirin (paketdən çıxarın)
Siyahı və ya dəst * ilə arqument kimi göstərildikdə, o, genişləndirilir və hər bir element ayrıca arqument kimi ötürülür.
def func(arg1, arg2, arg3):
print('arg1 =', arg1)
print('arg2 =', arg2)
print('arg3 =', arg3)
l = ['one', 'two', 'three']
func(*l)
# arg1 = one
# arg2 = two
# arg3 = three
func(*['one', 'two', 'three'])
# arg1 = one
# arg2 = two
# arg3 = three
t = ('one', 'two', 'three')
func(*t)
# arg1 = one
# arg2 = two
# arg3 = three
func(*('one', 'two', 'three'))
# arg1 = one
# arg2 = two
# arg3 = three
Aşağıdakı izahat siyahı üçündür, lakin eyni şey dəstinə də aiddir.
Elementlərin sayı arqumentlərin sayına uyğun gəlmirsə, TypeError xətası baş verir.
# func(*['one', 'two'])
# TypeError: func() missing 1 required positional argument: 'arg3'
# func(*['one', 'two', 'three', 'four'])
# TypeError: func() takes 3 positional arguments but 4 were given
Defolt arqumentləri olan funksiyalar üçün
Defolt arqument təyin edilərsə, elementlərin sayı kifayət deyilsə, standart arqument istifadə olunur. Elementlərin sayı çox böyükdürsə, TypeError xətası baş verir.
def func_default(arg1=1, arg2=2, arg3=3):
print('arg1 =', arg1)
print('arg2 =', arg2)
print('arg3 =', arg3)
func_default(*['one', 'two'])
# arg1 = one
# arg2 = two
# arg3 = 3
func_default(*['one'])
# arg1 = one
# arg2 = 2
# arg3 = 3
# func_default(*['one', 'two', 'three', 'four'])
# TypeError: func_default() takes from 0 to 3 positional arguments but 4 were given
Dəyişən uzunluqlu arqumentləri olan funksiyalar üçün
Dəyişən uzunluqlu arqument təyin edilərsə, mövqe arqumentinin elementindən sonrakı bütün elementlər dəyişən uzunluqlu arqumentə ötürülür.
def func_args(arg1, *args):
print('arg1 =', arg1)
print('args =', args)
func_args(*['one', 'two'])
# arg1 = one
# args = ('two',)
func_args(*['one', 'two', 'three'])
# arg1 = one
# args = ('two', 'three')
func_args(*['one', 'two', 'three', 'four'])
# arg1 = one
# args = ('two', 'three', 'four')
Lüğəti ** (iki ulduz) ilə genişləndirin (açın)
Lüğət diktəsi ** ilə arqument kimi göstərildikdə, element düymələri arqument adları və dəyərlər arqument dəyərləri kimi genişləndirilir və hər biri ayrıca arqument kimi ötürülür.
def func(arg1, arg2, arg3):
print('arg1 =', arg1)
print('arg2 =', arg2)
print('arg3 =', arg3)
d = {'arg1': 'one', 'arg2': 'two', 'arg3': 'three'}
func(**d)
# arg1 = one
# arg2 = two
# arg3 = three
func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# arg2 = two
# arg3 = three
Arqument adına uyğun gələn açar yoxdursa və ya uyğun gəlməyən açar varsa, TypeError xətası yaranacaq.
# func(**{'arg1': 'one', 'arg2': 'two'})
# TypeError: func() missing 1 required positional argument: 'arg3'
# func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# TypeError: func() got an unexpected keyword argument 'arg4'
Defolt arqumentləri olan funksiyalar üçün
Lüğətdəki düymələrə uyğun gələn yalnız arqument adlarının dəyərlərinin yeniləndiyi şəkil.
Arqument adına uyğun gəlməyən açar TypeError xətası ilə nəticələnəcək.
def func_default(arg1=1, arg2=2, arg3=3):
print('arg1 =', arg1)
print('arg2 =', arg2)
print('arg3 =', arg3)
func_default(**{'arg1': 'one'})
# arg1 = one
# arg2 = 2
# arg3 = 3
func_default(**{'arg2': 'two', 'arg3': 'three'})
# arg1 = 1
# arg2 = two
# arg3 = three
# func_default(**{'arg1': 'one', 'arg4': 'four'})
# TypeError: func_default() got an unexpected keyword argument 'arg4'
Dəyişən uzunluqlu arqumentləri olan funksiyalar üçün
Dəyişən uzunluqlu arqumentlər təyin edilərsə, arqument kimi göstərilən arqument adından başqa açarı olan istənilən element dəyişən uzunluqlu arqumentə ötürülür.
def func_kwargs(arg1, **kwargs):
print('arg1 =', arg1)
print('kwargs =', kwargs)
func_kwargs(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three'}
func_kwargs(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three', 'arg4': 'four'}
func_kwargs(**{'arg1': 'one', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg3': 'three'}