Функції

Функція в python - об'єкт, який приймає аргументи і повертає значення. Зазвичай функція визначається за допомогою інструкції def .

def <ім'я функції>(<параметри>,<параметри>=<значення>):

<команди>

Визначимо найпростішу функцію:

def add ( x , y ): 

    return x + y


Функція може бути будь-якої складності і повертати будь-які об'єкти (списки, кортежі, і навіть функції!): 

def newfunc ( n ): 

def myfunc ( x ): 

   return x +

  return myfunc

Функція може і не закінчуватися інструкцією return, при цьому функція поверне значення None : 

def func (): 

    pass

Аргументи функції

Функція може приймати будь-яку кількість аргументів чи не приймати їх зовсім. Також поширені функції з довільним числом аргументів, функції з позиційними і іменованими аргументами, обов'язковими і необов'язковими.

>>> def func ( a , b , c = 2 ): # c - необов'язковий аргумент 

...    return a + b +

... 

>>> 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 +

>>> 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)