вызов функции, возвращающий результат непрерывное количество раз - PullRequest
0 голосов
/ 28 апреля 2018
def foo(bar):
    def looger():
        print 'hello from first satatement'
        parent()
        print 'hello from second satatement'
    return looger
def parent():
   print 'printing from parent function'
parent = foo('hi')
parent()

Я застрял с проблемой. Приведенный выше код возвращает результат привет из первого оператора непрерывного времени, а затем показывает ошибку. я узнал об ошибке, что родительская функция вызывается неправильно, но я не понимаю, почему это дает мне непрерывный результат.

1 Ответ

0 голосов
/ 28 апреля 2018

Вы случайно создаете бесконечную рекурсию, перезаписывая глобальную функцию parent родительской функцией logger:

def foo(bar):
    def looger():
        print('hello from first satatement')
        parent() # This calls ....
        print('hello from second satatement')
    return looger
def parent():
   print('printing from parent function')
parent = foo('hi') # this function, what is not what you want
parent()

Это можно исправить, переименовав возвращаемую функцию:

def foo(bar):
    def looger():
        print('hello from first satatement')
        parent()
        print('hello from second satatement')
    return looger
def parent():
   print('printing from parent function')
p = foo('hi')
p()

печать:

hello from first satatement
printing from parent function
hello from second satatement
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...