Python тілінде тізімдерді (массивтерді), кортеждерді және сөздіктерді кеңейтуге (орауға) және олардың сәйкес элементтерін функция аргументтері ретінде бірге беруге болады.
Функцияны шақырған кезде тізімдер мен кортеждер үшін * және сөздіктер үшін ** аргументін көрсетіңіз. Жұлдызшалар санына назар аударыңыз *.
Мұнда келесі мәліметтер сипатталған.
- * (бір жұлдызша) бар тізімді немесе кортежді кеңейтіңіз (орамаңыз)
- Әдепкі аргументтері бар функциялар үшін
- Айнымалы ұзындық аргументтері бар функциялар үшін
- Сөздікті ** (екі жұлдызша) арқылы кеңейтіңіз (орамаңыз)
- Әдепкі аргументтері бар функциялар үшін
- Айнымалы ұзындық аргументтері бар функциялар үшін
Python функцияларын, әдепкі аргументтерді және функцияларды анықтау кезінде *,** айнымалы ұзындық аргументтерін негізгі пайдалану үшін келесі мақаланы қараңыз.
- БАЙЛАНЫСТЫ:Python функцияларындағы әдепкі аргументтерді қалай пайдалану және атап өту керек
- БАЙЛАНЫСТЫ:Python-да айнымалы ұзындық аргументтерін қалай пайдалануға болады(
*args
,**kwargs
)
* (бір жұлдызша) бар тізімді немесе кортежді кеңейтіңіз (орамаңыз)
Тізім немесе кортеж * арқылы аргумент ретінде көрсетілгенде, ол кеңейтіледі және әрбір элемент жеке аргумент ретінде беріледі.
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
Төмендегі түсініктеме тізімге арналған, бірақ дәл сол кортежге де қатысты.
Егер элементтер саны аргументтер санына сәйкес келмесе, TypeError қатесі орын алады.
# 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
Әдепкі аргументтері бар функциялар үшін
Әдепкі аргумент орнатылса, элементтер саны жеткіліксіз болса, әдепкі аргумент пайдаланылады. Элементтердің саны тым үлкен болса, TypeError қатесі орын алады.
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
Айнымалы ұзындық аргументтері бар функциялар үшін
Айнымалы ұзындық аргументі орнатылса, позициялық аргумент элементінен кейінгі барлық элементтер айнымалы ұзындық аргументіне жіберіледі.
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')
Сөздікті ** (екі жұлдызша) арқылы кеңейтіңіз (орамаңыз)
Сөздік дикті ** арқылы аргумент ретінде көрсетілгенде, элемент пернелері аргумент атаулары ретінде және мәндер аргумент мәндері ретінде кеңейтіледі және әрқайсысы жеке аргумент ретінде беріледі.
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
Аргумент атауына сәйкес келетін кілт болмаса немесе сәйкес келмейтін кілт болса, TypeError қатесі пайда болады.
# 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'
Әдепкі аргументтері бар функциялар үшін
Сөздіктегі пернелерге сәйкес келетін аргумент атауларының мәндері ғана жаңартылатын кескін.
Аргумент атауына сәйкес келмейтін кілт TypeError қатесіне әкеледі.
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'
Айнымалы ұзындық аргументтері бар функциялар үшін
Айнымалы ұзындық аргументтері орнатылса, аргумент ретінде көрсетілген аргумент атынан басқа кілті бар кез келген элемент айнымалы ұзындық аргументіне жіберіледі.
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'}