Python: получение ссылки на функцию изнутри себя Если я определяю функцию: def f(x): return x+3 Я могу позже хранить объекты как атрибуты функции, например: f.thing="hello!" Я хотел бы сделать это из кода самой функции. Проблема в том, как мне получить ссылку на функцию изнутри самой? Ответ 1 Точно так же просто используйте его имя. >>> def g(x): ... g.r = 4 ... >>> g <function g at 0x0100AD68> >>> g(3) >>> g.r 4 Ответ 2 Если вы пытаетесь выполнить memoization, вы можете использовать словарь в качестве параметра по умолчанию: def f(x, memo={}): if x not in memo: memo[x] = x + 3 return memo[x] Ответ 3 Или используйте закрытие: def gen_f(): memo = dict() def f(x): try: return memo[x] except KeyError: memo[x] = x + 3 return f f = gen_f() f(123) Немного лучше IMHO
Ответ 1 Точно так же просто используйте его имя. >>> def g(x): ... g.r = 4 ... >>> g <function g at 0x0100AD68> >>> g(3) >>> g.r 4
Ответ 2 Если вы пытаетесь выполнить memoization, вы можете использовать словарь в качестве параметра по умолчанию: def f(x, memo={}): if x not in memo: memo[x] = x + 3 return memo[x]
Ответ 3 Или используйте закрытие: def gen_f(): memo = dict() def f(x): try: return memo[x] except KeyError: memo[x] = x + 3 return f f = gen_f() f(123) Немного лучше IMHO