Функции это набор инструкций выполняющих какие-то действия.
Функции можно разделить на пользовательские - написанные пользователем (тобою) в создаваемых им скриптах Python и внешние функции - входящие в состав языка Python или в состав подключаемых библиотек и модулей. Один из примеров внешней функции это функция print(), входящая в состав языка Python и выводящая текст в консоль.
Определение пользовательской функции начинается с ключевого слова def имя_функции([аргументы]):. Строка с объявлением функции должна заканчиваться двоеточием после закрывающейся круглой скобки. Если функция возвращает значение в ее теле будет оператор return после которого должна идти переменная, тип и значение которой функция возвращает. Приведем несколько примеров:
def out(): # Определение пользовательской функции out()
print('Пользовательская функция без аргументов') # Действие функции out(). Вызыывается внешняя функция print()
print('и возвращаемого значения') # В блок функции out может входить множество строчек кода
out() # Вызов пользовательской функции out(). Будет выведено в консоль 2 строчки из функций print()
def out1(name): # Определение пользовательской функции out1() с одним аргументом name
print(name) # Действие функции out(). Выводим аргумент name
out1('Victor') # Вызов пользовательской функции out1(). Будет выведено в консоль Victor
out1('Анна') # Функции можно вызывать множество раз с разными аргументами. Будет выведено в консоль Анна
def out2(name, age): # Определение пользовательской функции out2() с двумя аргументами name и age
print(f'имя={name}, возраст={age}') # Действие функции out2(). Выводим аргументы name и age
out2('Victor', 43) # Вызов пользовательской функции out2(). Будет выведено в консоль имя=Victor, возраст=43
out2('Анна', 42) # Функции можно вызывать множество раз с разными аргументами. Будет выведено в консоль имя=Анна, возраст=42
def add(x, y): # Определяем пользовательскую функцию add() с двумя аргументами
return x + y # Функция add() возвращает значение - сумму аргументов x и y
sum = add(3, 2) # sum = 5 Вызов функции add и присваивание переменной sum возвращаемого значения функции
print(sum) # 5 Выводим значение sum
Функция могут быть привязаны к классу и вызываться либо через класс.функция() или объект.функция(), либо не привязаны к классу и вызваться сами по себе, как например функция print(). Вызов внешней функции print() уже был неоднократно продемонстрирован, приведем пример вызова внешних функций, входящих в состав языка Python, через объект.функция() для класса строк (тип данных str):
name = 'Виктор' # Строковая переменная name типа str со значением Виктор
name_caps = name.upper() # Вызываем встроенную функцию upper() для класса строк. Переводит строку в верхний регистр
print(name) # Виктор Выводим значение переменной name. Аргумент при вызове функции не изменяется!
print(name_caps) # ВИКТОР Выводим значение переменной name_caps
print('Сергей'.upper()) # СЕРГЕЙ Можно непосредственно применять методы к значениям
Соответственно функции характеризуются:
1) Названием функции;
2) Принадлежностью к классу (как например upper()) или отсутствием такой принадлежности (как например print());
3) Возвращаемым значением (есть или нет возвращаемое значение, если есть то типом возвращаемого значения);
4) Аргументами (количеством аргументов и типами аргументов).
def add(x, y): # Определяем функцию add()
return x + y # Возвращаем сумму аргументов x и y
sum = add(3, 2) # sum = 5 Вызов фунции add и присваивание переменной sum возвращаемого значения функции
def func(x): # Возвращаем функцию из функции
def nest_func(y): # Вложенная функция
return x + y
return nest_func # Возвращает функцию!
f = func(10) # f это функция
print(f(7)) # 17
def add(a, b = 2): # Необязательный аргумент (по умолчанию)
return a + b
print(add(4, 3)) # 7
print(add(4)) # 6
def sum(*args): # Переменное число параметров. args - кортеж
res = 0;
for i in range(len(args)): # Находим сумму args
res += args[i]
return res
print(sum(7)) # 7
print(sum(3, 1)) # 4
print(sum(3, 2.35, 10)) # 15.35