Как известно, функции — это блоки инструкций, предназначенные для выполнения определенных задач в программировании. Функции позволяют разбивать большие фрагменты кода на более мелкие отрезки или модули. Позже их можно вызывать отовсюду. Это позволяет повторно использовать определенные части программы и избегать повторений. Функции можно определять внутри классов, модулей, вложенных функций и так далее.
Основные особенности функций в Python:
- Используются чтобы избегать повторений в коде,
- Используются для разделения кода на мелкие модули
- Позволяют скрывать код и создавать ясность для понимания модулей,
- Позволяют повторно использовать код и сохранять память,
- Код из функции можно выполнить только по ее имени,
- Простой синтаксис:
def имя_функции(параметры):
.
Правила создания функций:
- Для объявления функции в Python используется ключевое слово
def
. - Название функции должно начинаться с символа латинского алфавита в любом регистре или нижнего подчеркивания.
- В каждой функции есть двоеточие и отступ, после которого записывается сам код программы.
- Зарезервированные ключевые слова не могут использоваться в качестве названия функции.
- Функция может содержать несколько параметров или не иметь их совсем.
Создание функции в Python
Для создания нужно написать ключевое слово def
. Синтаксис следующий:
def function_name():
# логика функции
return result # возврат значения
Создадим и вызовем реальную функцию в Python:
def my_fun():
print("Как вызвать функцию в Python?")
my_fun() # вызов функции
Вывод: Как вызвать функцию в Python?
.
Вызов функции в Python
После создания функции ее можно вызвать, написав имя или присвоив ее переменной:
def my_fun():
x = 22 ** 5
return x
# 1. Вызов функции
my_fun()
# 2. Вызов функции и присвоение результат переменной
a = my_fun()
# 3. Вызов функции и вывод результат в консоль
print(my_fun())
Создадим простую функцию, которая ничего не возвращает и вызовем ее.
def my_fun():
print("Hello World")
print("Функция вызвана")
my_fun()
Вывод:
Hello World
Функция вызвана
В этом примере вызов функции my_fun()
привел к выводу двух строк.
Вызов вложенных функций в Python
Одна функция внутри другой — это вложенные функции. Создавать вложенные функции можно с помощью того же ключевого слова def
. После создания функции нужно вызвать как внешнюю, так и внутреннюю. Создадим программу, чтобы разобраться с этим на примере.
def out_fun():
print("Привет, это внешняя функция")
def in_fun():
print("Привет, это внутренняя функция")
in_fun()
out_fun()
Вывод:
Привет, это внешняя функция
Привет, это внутренняя функция
Здесь функция in_fun()
определена внутри out_fun()
. Для вызова in_fun()
нужно сперва вызвать out_fun()
. После этого out_fun()
начнет выполняться, что приведет к вызову in_fun()
.
Внутренняя функция не будет выполняться, если не вызвать внешнюю.
Еще один пример. Программа для вывода результата сложения двух чисел с помощью вложенных функций в Python.
def fun1():
a = 6
def fun2(b):
a = 4
print ("Сумма внутренней функции", a + b)
print("Значение внешней переменной a", a)
fun2(4)
fun1()
Вывод:
Значение внешней переменной a 6
Сумма внутренней функции 8
Функции как объекты первого класса
В Python функции — это объекты первого класса. У них есть те же свойства и методы, что и обычных объектов. Так, функцию можно присвоить переменной, передать ее в качестве аргумента, сохранить в структуре данных и вернуть в качестве результата работы другой функции. Все данные в Python представлены в качестве объектов или отношений.
Особенности функций как объектов первого класса:
- Функции можно присваивать переменным.
- Функция может быть примером объекта.
- Функцию можно вернуть из функции.
- У функций те же свойства и методы, что и у объектов.
- Функцию можно передать в качестве аргумента при вызове другой функции.
Разберем на примере:
def my_object(text):
return text.upper()
print(my_object("Вызов my_object"))
upper = my_object
print(upper("Вызов upper"))
Вывод:
ВЫЗОВ MY_OBJECT
ВЫЗОВ UPPER
Напишем программу для вызова функции в классе (точнее, это будет метод класса).
class Student:
no = 101
name = "Владимир"
def show(self):
print("№ {}\nИмя {}".format(self.no, self.name))
stud = Student()
stud.show()
Вывод:
№ 101
Имя Владимир