Функции представляют блок кода, который выполняет определенную задачу и который можно повторно использовать в других частях программы. В предыдущих статьях уже использовались функции. В частности, функция 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()