Первый: Вы уверены, что хотите это сделать? Обычно это не очень хорошая идея. Тем не менее,
def outer():
def inner(): pass
locals()['inner']()
Вы можете использовать locals
, чтобы получить словарь локальных значений переменных, а затем посмотреть значение 'inner'
, чтобы получить функцию. Однако не пытайтесь редактировать локальную переменную dict; это не сработает.
Если вы хотите получить доступ к внутренней функции вне внешней функции, вам нужно как-то ее сохранить. Локальные переменные не становятся атрибутами функции или что-то в этом роде; они отбрасываются при выходе из функции. Вы можете вернуть функцию:
def outer():
def inner(): pass
return inner
nested_func = outer()
nested_func()
В случае, если вы заинтересованы, я хочу сделать словарь функций обработчика, и хотите, чтобы избежать добавления десятков строк, как 'обработчика [«Foo»] = Foo'. Я бы использовал лямбда, если бы мог ... – Doradus