Функция - это некоторый блок кода программы, который можно вызывать при необходимости бесконечное число раз в любом месте программы.
Как результат работы функция может как возвращать какое-то вычисленное значение, если это четко указано в блоке функции, а может и не возвращать ничего, а лишь печатать результат, что также явно указывается в блоке функции. Для начала стоит наглядно разобрать синтаксис объявления функции.
Все начинается с ключевого слова def [definition - определение]
def // ключевое слово для объявления функции
После чего указывается имя функции, через которую мы сможем обращаться к ней (вызывать на исполнение)
def print_hello():
...
После имени функции ставятся круглые скобки для передачи возможных параметров (перменных). Потом ставится двоеточие, как знак начала блока кода функции.
Переменные (параметры), переданные в функцию, будут являться локальными внутри этой функции. То есть доступ к ним будет осуществляться ТОЛЬКО внутри это функции. После завершения работы функции все переменные будут удалены.
При передаче параметров в функцию можно указать любое имя переменной, так как передается в параметры ссылка на объект, а имя переменной есть ни что иное как имя ссылки.
Итак, теперь пора создать свою первую работающую функцию!
def print_hello():
print('hello world!')
Все что делает наша функция - это печатает на экран строку.
Но функциями нужно пользоваться, а не любоваться, так что пора научиться вызовать их, чтобы они выполнили свою задачу.
def print_hello():
print('hello world!')
print_hello() // вызов функции
Выйдя из тела функции по стандарту PEP-8 отступаем две строчки и вызываем функцию, написав ее имя ОБЯЗАТЕЛЬНО с круглыми скобками в конце.
Круглые скобки означают, что функция была ВЫЗВАНА, чтобы отработать код внутри нее. Если бы мы просто написали:
def print_hello():
print('hello world!')
print_hello // это ссылка на ОБЪЕКТ-функцию, а не вызов функции
то в таком случае при запуске всей программы на выполнение мы бы не получили ничего.
Как была сказано в начале - функция может вернуть какое-то значение, если того захочет разработчик.
Оператор return и будет этим заниматься.
Этот оператор 100% используется во всех чуть сложных функциях, потому что чаще всего функция выполняет какие-то расчеты и сразу возвращает их, чтобы дальше с ними работал разработчик.
Рассмотрим синтаксис.
def print_hello():
return 'hello world!'
Как видно, теперь функции вывода больше нет, как же получить эту строку на своем экране?
Просто вызвать функцию теперь уже будет недостаточно. Этот оператор возвращает ССЫЛКУ на объект, полученный при выполнении функции.
Значит, его нужно где-то хранить, верно?
Рассмотрим процесс вывода строки на экран.
def print_hello():
return 'hello world!'
result = print_hello() // то есть после выполнения тела функции result = 'hello world!'
print(result)
Теперь мы не просто вызываем функцию, а присваиваем ее результат некоторой перменной, ссылающейся теперь на этот объект.
Потом просто выводим эту переменную на экран и получаем заветную строку!
Функции можно передавать параметры и оперировать ими внутри функции.
Рассмотрим синтаксис.
def summ_func(a, b):
a += 1
b = 15 * 2
return a + b
result = summ_func(2, 8)
print(result) // будет распечатано 33
Как видно, внутри функции также можно делать базовые арифметические операции