Python. Функции
Функция — это фрагмент программного кода, к которому можно обратиться (вызвать) из другого места программы, причем многократно.
def say_hello(name):
print('Привет, ' + name + '!')
say_hello('Александр') # напечатает 'Привет, Алекандр'
Объявление функции
Первая строка объявления функции — это оператор следующего вида
Ключевое слово def
указывает на объявление функции, <имя функции>
— это место,
где будет объявлено имя для вызова функции, <параметры>
— место, где объявляются
любые аргументы, которые могут быть переданы функции.
Часто, после строки с объявлением функции размещают строку документации, в которой описывается, что данная функция делает, какие параметры принимает и что возвращает
def say_hello(name):
"""
Печатает приветственное сообщение. В параметре name указывается имя,
к кому обращено приветствие
"""
Параметры
Параметры позволяют передавать значения в функцию, которые можно использовать в блоке ее кода. Они подобны переменным, присваиваемым функциям при их вызове. Но параметр может быть разным при каждом вызове функции.
Функция не обязана принимать параметры. Для такой функции оставьте круглые скобки после ее имени пустыми:
При вызове функции вы передаете значения для параметров в круглых скобках, которые следуют за именем функции. Значения можно установить на основе позиции, в которой они передаются, или названия параметра.
def my_function(first, second, third):
""" Печатает переданные параметры """
print('Первый: ' + first)
print('Второй: ' + second)
print('Третий: ' + third)
my_function(1, 2, 3)
# Первый: 1
# Второй: 2
# Третий: 3
my_function(first=1, second=2, third=3)
# Первый: 1
# Второй: 2
# Третий: 3
my_function(1, third=3, second=2)
# Первый: 1
# Второй: 2
# Третий: 3
При вызове функции с передачей именованных параметров есть правило: сначала идут позиционные значения, а только потом именованные
my_function(third=3, second=2, 1)
# Ошибка SyntaxError: positional argument follows keyword argument
Параметрам при объявлении функции можно устанавливать значения по умолчаниям. Указание таких параметров необязательно при вызове функции.
def my_function(first, second, third=3):
""" Печатает переданные параметры """
print('Первый: ' + first)
print('Второй: ' + second)
print('Третий: ' + third)
my_function(1, 2)
# Первый: 1
# Второй: 2
# Третий: 3
my_function(1, 2, 4):
# Первый: 1
# Второй: 2
# Третий: 4
Возвращаемое значение
Чтобы указать возвращаемое значение из функции, используется ключевое слово return
Если ключевого слова функции return
в теле функции нет, или оно есть, но без указания возвращаемого значения
то считается, что функция возвращает None
.
def no_return_1(a, b):
a + b
def no_return_2(a, b)
a + b
return
print(no_return_1(1, 2)) # напечатает None
print(no_return_2(1, 2)) # напечатает None
Вложенные функции
Объявления функций можно вкладывать друг в друга.
Однострочные (lambda) функции
В Python есть возможность создавать однострочные (неименованные) функции. Они также известны как lambda-функции. Объявление такой функции выглядит следующим образом
Например, функция для сложения двух значений может задана так
Lambda-функции используются в некоторых функциях стандартной библиотеки Python.
Например, есть функция filter(), которая позволяет отфильтровать список. Первым параметром указывается условие фильтрации, а вторым — список, который нужно отфильтровать. Например, если нам надо из некоторого списка вернуть только четные значения, то мы можем сделать так