Функция аргументтері. Функция кез келген сандағы аргументтерді қабылдауы мүмкін немесе мүлдем қабылдамауы да мүмкін. Сондай-ақ, аргументтер саны кез келген, позициялық және атаулы аргументтері бар функциялар, міндетті және міндетті емес функциялар кең таралған.
>>> def func(a, b, c=2): # c – мінддетті емес аргумент
... return a + b + c
...
>>> func(1, 2) # a = 1, b = 2, c = 2 (үнсіз жағдайда)
5
>>> func(1, 2, 3) # a = 1, b = 2, c = 3
6
>>> func(a=1, b=3) # a = 1, b = 3, c = 2
6
>>> func(a=3, c=6) # a = 3, c = 6, b анықталмаған
Traceback (most recent call last):
File "", line 1, in
func(a=3, c=6)
TypeError: func() takes at least 2 arguments (2 given)
Функция позициялық аргументтердің айнымалы санын қабылдауы мүмкін, ондай жағдайда оның атауының алдына * қойылады:
>>> def func(*args):
... return args
...
>>> func(1, 2, 3, 'abc')
(1, 2, 3, 'abc')
>>> func()
()
>>> func(1)
(1,)
Мысалдан көргендей, функцияның барлық берілген аргументтерінің ішінен args – бұл кортеж, сонымен қатар айнымалының өзімен де кортежбен сияқты жұмыс істеуге болады.
Функция атаулы аргументтердің кез келген санын қабылдай алады, онда атудың алдына ** белгісі қойылады:
>>> def func(**kwargs):
... return kwargs
...
>>> func(a=1, b=2, c=3)
{'a': 1, 'c': 3, 'b': 2}
>>> func()
{}
>>> func(a='python')
{'a': 'python'}
Kwargs айнымалысында барлық әрекеттерді атқаруға болатын сөздік сақталады.
Анонимді функциялар, lambda инструкциясы. Анонимді функциялар тек бір ғана өрнекті қамтығандықтан тез орындалады. Анонимді функциялар lambda инструкциясының көмегімен құрылады. Сонымен қатар, оларды def func() инструкциясындағы сияқты міндетті түрде айнымалыларға меншіктеудің қажеті жоқ:
>>> func = lambda x, y: x + y
>>> func(1, 2)
3
>>> func('a', 'b')
'ab'
>>> (lambda x, y: x + y)(1, 2)
3
>>> (lambda x, y: x + y)('a', 'b')
'ab'
lambda функциясы басқа функцияларға қарағанда return инструкциясын қажет етпейді, ал басқа жағынан еш айырмашылығы жоқ:
>>>
>>> func = lambda *args: args
>>> func(1, 2, 3, 4)
(1, 2, 3, 4)
Достарыңызбен бөлісу: |