Функцией называется отдельный блок программы. У него может быть имя, он может принимать аргументы, с которыми потом будет работать, и может возвращать результат своей работы.
Параметрами функции называются специальныя переменные, которые будут принимать конкретные значения при вызове этой функции. Часто являются локальными переменными внутри этой функции, которые принимают аргументы в качестве значений. Альтернативное название - формальные параметры.
Аргументами или фактическими параметрами называются переменные (выражения, литералыи пр.), переданные в функцию при вызове. По сути, аргументы - это источник реальных значений параметров функции при ее вызове.
Литерал - фактическое значение, которое записывается в переменную или передается в функцию. К примеру, в записи x = 1
литералом является 1.
Можно рассмотреть функцию как черный ящик, в который вкладывают параметры. Ящик что-то делает, вы можете даже не знать, что именно, а потом предоставляет вам возможность работать с результатами своей работы.
В Python функция определяется или декларируется так:
def say_hello():
return "Hello"
res = say_hello()
Важнейшие элементы функции:
def
говорит о том, что дальше будет функция.def
следует название функции, приведенная выше называется say_hello
.return
используется в теле функции для того, чтобы завершить работу функции и вернуть ее результат. Если не написать return, функция вернет None
. Хорошим тоном считается возвращать какое-нибудь значение явно."Hello"
, из функции она вернется благодаря ключевому слову return
и поместится в переменную res
.Схематически, функцию можно изобразить следующим образом:
def имя_функции():
# Тело функции
# Внутри тела функции прозводятся разные вычисления
"""
Внутри тела функции могут производиться любые действия.
К примеру, условие:
"""
a = 10
if a < 20:
return "Меньше" # возвращаемое значение
elif a > 20:
return "Больше" # и это возвращаемое значение
else:
return "Что то пошло не так..."
# и это возвращаемое значение
В Python принято тело функции, как и тело любого блока, выделять отступом в 4 пробела.
Все, что мы обсуждаем - только лишь создание функции, но не использование ее. Для использования функции ее необходимо вызвать.
Функции создают по несольким причинам:
В любом случае созданную (объявленную) функцию необходимо вызвать, чтобы она выполнила свою задачу. До тех пор, пока функция не вызвана, она бесполезна и ничего не делает.
Вызовем нашу функцию say_hello:
say_hello() # выведет Hello
Синтаксис вызова функции:
имя_функции() # скобки обязательны при вызове функции
Если просто написать функцию и вызвать ее, мы не увидим возвращаемый результат. Он вернется, но после этого потеряется. Для того, чтобы этот результат не потерять, его нужно передать в работу другой функции, сохранить в переменную или любым другим образом поймать обработать. К примеру, поместим ее в функцию print в качестве аргумента:
print(say_hello()) # Hello
Как правило, функция имеет некоторые параметры, с которыми она работает.
Пример из математики, где y
- функция от x
:
y(x) = 2x
y(x) = −5x + 2
y(x) = 12x2−1
В Python функции так же могут принимать параметры:
def plus(num1, num2):
result = num1 + num2
return result
Здесь num1 и num2 - параметры функции plus
.
При создании функции вы описываете параметры, при вызове - передаете аргументы. Значения аргументов попадают в параметры и внутри функции - это параметры или просто локальные переменные.
В Python, если вы декларируете параметры, то вы обязаны их туда передать, иначе получите ошибку. Вызовем нашу функцию plus
с двумя числами-аргументами - 10 и 5:
ten = 10
five = 5
plus(ten, five)
# функция вывела 15
plus(10, 5)
# функция вывела 15
В момент выполнения функции параметры num1
и num2
примут значения 10
и 5
соостветственно.
Так же в python можно передавать аргументы не по порядку, но с явным указанием аргумента и соответствию аргумента передаваемому значению
plus(num1=10, num2=5)
plus(num2=5, num1=10)
Как видно из примера выше, аргументы можно передавать и в переменных, и литералами.
def func(positional, keyword=value, *args, **kwargs)
pass
В Python можно различить 4 вида параметров у функции:
Все в Python является объектом. Функции не выделяются и тоже являются объектами. Как и любые други типы данных, функции можно хранить в переменных, передавать параметрами в другие функции и хранить в словарях, списках и кортежах:
Пример передачи функции в качестве параметра:
def run_operation(num1, num2, operation):
return operation(num1, num2)
def plus(num1, num2):
return num1 + num2
def minus(num1, num2):
return num1 - num2
run_operation(10, 5, plus)
# 15
run_operation(10, 5, minus)
# 5
Хранение функции в словаре:
def plus(num1, num2):
return num1 + num2
def minus(num1, num2):
return num1 - num2
operations = {
'plus': plus,
'minus': minus
}
def operation(num1, num2, operations_dict, operation):
return operations_dict[operation](num1, num2)
Функция map принимает два параметра: функцию и итератор, например, список.
map
применяет к каждому элементу списка переданную функцию.
string_numbers = ['1', '2', '3', '4', '5']
new_list = list(map(int, string_numbers))
print(new_list)
# [1, 2, 3, 4, 5, 6, 7]
Еще один пример:
def my_square(num):
return num ** 2
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
squared_numbers = list(map(my_square, numbers))
print(squared_numbers)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Написать 2 функции. Первая функция будет принимать строку и приводить ее к нижнему регистру.
Вторая функция будет принимать строку и проводить ее к верхнему регистру.
После чего с помощью map
применить ваши функции к списку строк.
Отдельно каждую функцию к отдельному спику строк!
Написать функцию которая будет простое число возводить в квардрат.
Необходимо возвести в квадрат все простые числа в списке используя функцию map
Написать собственную реализацию функции map
.
Доделать задания по практике
Написать функцию которая принимает список. Необходимо посчитать количество одинаковых элементов в списке.
Самостоятельно разобраться с функцией zip
в Python.
Написать самостоятельно реализацию функции zip
.