Внутренние функции в Python

В Python вы можете определить одну или несколько функций внутри функции и называются они внутренними.

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

Пример

В этом примере мы определим простую функцию с двумя внутренними.

def function():
    print('Inside function.')

    def innerFunction1():
        print('Inner function 1.')

    def innerFunction2():
        print('Inner function 2.')

    innerFunction1()
    innerFunction2()

function()

Именование для function(), innerFunction1() и innerFunction2() предназначено только для понимания. Вы можете использовать свои собственные имена функций в зависимости от требований.

Вывод:

Inside function.
Inner function 1.
Inner function 2.

В приведенной выше программе у нас есть function(), которая имеет оператор печати, две внутренние функции, а именно innerFunction1() и innerFunction2(), которые мы вызвали, используя function().

Работа внутренних функций

Теперь давайте разберемся с работой внутренних функций. Для примера возьмем вышеуказанную программу.

Мы знаем, что выполнение программы происходит последовательно. Ниже приводится пошаговое выполнение вышеуказанной программы.

  1. Определите и вызовите function().
  2. Выполните print (‘Внутренняя функция.’).
  3. Определите innerFunction1().
  4. Определите innerFunction2().
  5. Вызовите innerFunction1().
  6. Выполните печать («Внутренняя функция 1.»).
  7. Вызовите innerFunction1().
  8. Выполните печать («Внутренняя функция 2»).

Теперь мы посмотрим на область видимости Function() и внутренних функций.

function() определяется в рамках программы. Таким образом, вы можете получить доступ к функции в любом месте программы.

innerFunction1() определяется внутри function(). Вы не можете вызвать ее вне Function(). Внутренняя функция 1 определяется только тогда, когда вы вызываете Function, после чего она больше не определяется. То же самое объяснение справедливо и для innerFunction2().

Если вы попытаетесь вызвать любую внутреннюю функцию из-за пределов их области видимости, NameError возникнет во время вызова функции. Мы продемонстрировали то же самое в следующем примере.

def function():
    print('Inside function.')

    def innerFunction1():
        print('Inner function 1.')

    def innerFunction2():
        print('Inner function 2.')

    innerFunction1()
    innerFunction2()

innerFunction1()

Вывод:

Traceback (most recent call last):
  File "d:/pythonexamplesorg/example.py", line 13, in <module>
    innerFunction1()
NameError: name 'innerFunction1' is not defined

Вывод

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *