Функции представляют блок кода, который выполняет определенную задачу и который можно повторно использовать в других частях программы. В предыдущих статьях уже использовались функции. В частности, функция print(), которая выводит некоторое значение на консоль. Python имеет множество встроенных функций и позволяет определять свои функции. Формальное определение функции:
def имя_функции ([параметры]):
инструкции
Определение функции начинается с выражения def, которое состоит из имени функции, набора скобок с параметрами и двоеточия. Параметры в скобках необязательны. А со следующей строки идет блок инструкций, которые выполняет функция. Все инструкции функции имеют отступы от начала строки.
Например, определение простейшей функции:
def say_hello():
print("Hello")
Функция называется say_hello. Она не имеет параметров и содержит одну единственную инструкцию, которая выводит на консоль строку "Hello".
Обратите внимание, что инструкции функции должны иметь отступы от начала функции. Например:
def say_hello():
print("Hello")
print("Bye")
Здесь инструкция print("Bye") не имеет отступов от начала функции say_hello и поэтому в эту функцию не входит. Обычно между определением функции и остальными инструкциями, которые не входят в функцию, располагаются две пустых строки.
Для вызова функции указывается имя функции, после которого в скобках идет передача значений для всех ее параметров:
имя_функции ([параметры])
Например, определим и вызовем функцию:
def say_hello(): # определение функции say_hello
print("Hello")
say_hello() # вызов функции say_hello
say_hello()
say_hello()
Здесь три раза подряд вызывается функция say_hello. В итоге мы получим следующий консольный вывод:
Hello
Hello
Hello
Обратите внимание, что функция сначала определяется, а потом вызывается.
Если функция имеет одну инструкцию, то ее можно разместить на одной строке с остальным определением функции:
def say_hello(): print("Hello")
say_hello()
Подобным образом можно определять и вызывать и другие функции. Например, определим и выполним несколько функций:
def say_hello():
print("Hello")
def say_goodbye():
print("Good Bye")
say_hello()
say_goodbye()
Консольный вывод:
Hello
Good Bye
Локальные функции
Одни функции могут определяться внутри других функций - внутренние функции еще называют локальными. Локальные функции можно использовать только внутри той функции, в которой они определены. Например:
def print_messages():
# определение локальных функций
def say_hello(): print("Hello")
def say_goodbye(): print("Good Bye")
# вызов локальных функций
say_hello()
say_goodbye()
# Вызов функции print_messages
print_messages()
say_hello() # вне функции print_messages функция say_hello не доступна
Здесь функции say_hello() и say_goodbye() определены внутри функции print_messages() и поэтому по отношению к ней являются локальными. Соответственно они могут использоваться только внутри функции print_messages()
Организация программы и функция main
В программе может быть определено множество функций. И чтобы всех их упорядочить, одним из способов их организации является добавление специальной функции (обычно называется main), в которой потом уже вызываются другие функции:
def main():
say_hello()
say_goodbye()
def say_hello():
print("Hello")
def say_goodbye():
print("Good Bye")
# Вызов функции main
main()