Изменение определения функции без назначения

Мне было поручено:

Напишите однострочное выражение, которое преобразует функцию f (x) в f (x) +1. Подсказка: подумайте о том, как привязка локального кадра для сохраненного значения f может быть создана без назначения .

Пример:

>>> f = lambda x: x*x >>> f(5) 25 >>> ---your one line expression--- >>> f(5) 26 >>> f, g = None, f >>> g(5) 26 

Я пытался это сделать:

 k,f=f, lambda x: k(x)+1 

И он работает, но использует назначение f=f . Как я мог сделать это без задания?

Мой учитель сказал мне, что в Python есть функция, аналогичная функции let в Scheme, но я не уверен, что эта функция хочет, чтобы мы ее использовали, потому что она не указала название функции.

Это будет работать, но это может быть обман:

 >>> f = lambda x: x*x >>> f(5) 25 >>> globals().update({'f': (lambda g: lambda x: g(x)+1)(f)}) >>> f(5) 26 >>> f, g = None, f >>> g(5) 26 

Это не то, что нужно использовать в целом, но я полагаю, вы могли бы это сделать:

 def f(x, f=f): return f(x) + 1 

И есть «нет (явных) назначений», поскольку мы просто определяем новое имя функции, которое бывает таким же, как и оригинал.