В документах описано, что -
Определение функции - это исполняемый оператор. Его выполнение связывает имя функции в текущем локальном пространстве имен с объектом функции (обертка вокруг исполняемого кода функции). Этот функциональный объект содержит ссылку на текущее глобальное пространство имен в качестве глобального пространства имен, которое будет использоваться при вызове функции.
def func1():
def func2():
print("HELLO")
func1()
func2()
NameError: name 'func2' is not defined
После выполнения func1 выполняется определение func2 и ссылка на его функциональный объектв глобальном пространстве имен. Теперь, даже после присутствия объекта функции func2 в глобальном пространстве имен, почему я не могу вызвать func2 извне тела func1.
Я новичок в программировании, и я делаю это просто для того, чтобыхорошее представление о функциях, если у меня возникли какие-либо недоразумения, объясните, пожалуйста, как работает пространство имен во время вызова функции.