Как вызвать функцию, находящуюся в другой функции?

Какое то время, у меня была проблема, YouTube Guides оп питону не помогали. Суть вопроса:

Как вызвать функцию, находящуюся в другой функции?

Добавлю код для более простого понимания:

def function1(): #Первая функция
   print("Hello World!")
   def function2(): #Функция которую нужно вызвать из первой функции.
      print("World is answer: Hello!")

Я задал этот вопрос, не просто так. Я заметил, что ни на форумах, не на GitHab-е, даже здесь, на ruSO, нету ясного, и понятного ответа, как так сделать.

Я много чего пробовал, пытаясь даже костылями вызвать(Код кривой, в силу что был написан очень давно, когда только познал базовые знания питона):

def func1():
   prit("Hello world!")
   def func2():
      print("Call func from funck is successfully!")

func(fucn2())

Вот неясно, как и что, ведь выдаёт ошибку:

D:\Terminalius\TermNet\$cash>func2.py
Traceback (most recent call last):
  File "D:\Terminalius\TermNet\$cash\func2.py", line 6, in <module>
    func(fucn2())
NameError: name 'func' is not defined

Что бы вы не подумали что код неправильный, вот скриншот из редактора: Скриншот из редактора кода.


Ответы (3 шт):

Автор решения: S. Nick

Вам срочно надо освоить ООП. Ну, а попробовать можно так:

def func1(flag=0):
    def func2():
        print("Call func from funck is successfully!")
   
    if flag:
        print("Hello world!")
    else:
        func2()

func1()
func1(1)
→ Ссылка
Автор решения: CrazyElf

Это возможно только если в явном виде вернуть указатель на внутреннюю функцию из внешней функции. На подобном принципе, кстати, работают декораторы:

def function1(): #Первая функция
   print("Hello World!")
   def function2(): #Функция которую нужно вызвать из первой функции.
      print("World is answer: Hello!")
   return function2

function1()   # вызываем внешнюю функцию, возврат игнорируем
function1()() # вызываем внешнюю функцию, возврат вызываем как функцию

Вывод:

Hello World!
Hello World!
World is answer: Hello!
→ Ссылка
Автор решения: Карабас

Функцию в функции тоже нужно вызвать.

def function1(): #Первая функция
    print("Hello World!")
    def function2(): #Функция которую нужно вызвать из первой функции.
        print("World is answer: Hello!")
    function2()

function1()

Вывод:

Hello World!
World is answer: Hello!
→ Ссылка