Шаг 115.
Основы языка Python.
Пользовательские функции. Расположение определений функций

    На этом шаге мы рассмотрим особенности размещения функций.

    Все инструкции в программе выполняются последовательно сверху вниз. Это означает, что, прежде чем использовать в программе идентификатор, его необходимо предварительно определить, присвоив ему значение. Поэтому определение функции должно быть расположено перед вызовом функции.

    Правильно:

def summa(x, y): 
    return x + y 

v = summa(10, 20) # Вызываем после определения. Все нормально

    Неправильно:

v = summa(10, 20)  # Идентификатор еще не определен. Это ошибка!!!
def summa(x, y): 
    return x + y 

    В последнем случае будет выведено сообщение об ошибке: NameError: name 'summa' is not defined. Чтобы избежать ошибки, определение функции размещают в самом начале программы после подключения модулей или в отдельном модуле.

    С помощью оператора ветвления if можно изменить порядок выполнения программы - например, разместить внутри условия несколько определений функций с одинаковым названием, но разной реализацией:

# -*- coding: utf-8  -*-
n = input("Введите 1 для вызова первой функции: ")
if n == "1":
    def echo():
        print("Вы ввели число 1")
else:
    def echo():
        print("Альтернативная функция")

echo() # Вызываем функцию
input()
Архив с файлом можно взять здесь.

    При вводе числа 1 мы получим сообщение "Вы ввели число 1", в противном случае - "Альтернативная функция".

    Помните, что инструкция def всего лишь присваивает ссылку на объект функции идентификатору, расположенному после ключевого слова def. Если определение одной функции встречается в программе несколько раз, то будет использоваться функция, которая была определена последней. Пример:

def echo():
    print("Вы ввели число 1") 
def echo():
    print("Альтернативная функция") 

echo() # Всегда выводит "Альтернативная функция"

    На следующем шаге мы рассмотрим необязательные параметры и сопоставление по ключам.




Предыдущий шаг Содержание Следующий шаг