Назад | Python 3 учебник | Вперёд
В Python функцией называют объект, принимающий аргумент и возвращающий значение. Обычно функция определяется с помощью инструкции def.
1 2 |
def my_function(x, y): return x * y + x / y |
Так же, как и в Java, return указывает, какое значение нужно вернуть.
Пример вызова нашей функции:
1 |
print(my_function(10, 2)); |
Как видим, пока ничего сложного. В консоли Spyder 3 выведется 25.0.
Функции в Python могут возвращать даже другие функции (здесь мы проверяем в консольном интерпретаторе Python):
1 2 3 4 5 6 7 8 9 10 11 12 |
$ python3 Python 3.5.3 (default, Sep 27 2018, 17:25:39) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>> def i_will_return_func(name): ... def prefix_with_name(prefix): ... return prefix + name; ... return prefix_with_name ... >>> my_new_function = i_will_return_func("Vasya") >>> my_new_function("Dear, ") 'Dear, Vasya' |
Функция может не возвращать никакого значения, а просто делать что-то полезное, например, выводить сообщение:
1 2 |
def a_function(): print("You just created a function!") |
Можно сделать пустую функцию, которая вообще ничего не делает. Это может быть полезно, например, когда вы делаете набросок приложения и хотите просто описать функции без реализации:
1 2 |
def empty_function(): pass |
Можно создавать функции с необязательными аргументами:
1 2 3 4 5 6 7 8 9 10 11 12 |
$ python3 Python 3.5.3 (default, Sep 27 2018, 17:25:39) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>> def func(a, b, c=2): # c - необязательный аргумент ... return a + b + c ... >>> func(1, 2) # c=2 по умолчанию 5 >>> func(1, 2, 3) 6 >>> |
Можно задавать значения для аргументов по их имени:
1 2 3 4 |
>>> func(b=2, a=1) 5 >>> func(a=1, c = 3, b=2) 6 |
Можно также создавать функции с переменным числом аргументов. Для этого мы ставим символ * перед параметром, принимающим все значения аргументов, и ** перед параметром, принимающим все имена параметров.
1 2 3 4 5 6 7 8 9 10 11 |
$ python3 Python 3.5.3 (default, Sep 27 2018, 17:25:39) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>> def many(*args, **kwargs): ... print( args ) ... print( kwargs ) ... >>> many(1, 2, 3, man="Mike", girl="Kate") (1, 2, 3) {'man': 'Mike', 'girl': 'Kate'} |