В 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().
Работа внутренних функций
Теперь давайте разберемся с работой внутренних функций. Для примера возьмем вышеуказанную программу.
Мы знаем, что выполнение программы происходит последовательно. Ниже приводится пошаговое выполнение вышеуказанной программы.
- Определите и вызовите function().
- Выполните print (‘Внутренняя функция.’).
- Определите innerFunction1().
- Определите innerFunction2().
- Вызовите innerFunction1().
- Выполните печать («Внутренняя функция 1.»).
- Вызовите innerFunction1().
- Выполните печать («Внутренняя функция 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.