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

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

Напишите однострочное выражение, которое преобразует функцию 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, но я не уверен, что эта функция хочет, чтобы мы ее использовали, потому что она не указала название функции.

2 Solutions collect form web for “Изменение определения функции без назначения”

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

 >>> 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 

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

  • Что хорошего места для хранения конфигурации в Google AppEngine (python)
  • как получить всю папку только в заданном пути в python?
  • Python: получить относительный путь от сравнения двух абсолютных путей
  • как использовать python Elasticsearch client upsert api
  • Ошибка Nump в Python
  • неверные ответы для квадратичных уравнений
  • Почему этот код не работает (Leetcode в Python)?
  • Как создать класс, который также является списком?
  • Python - лучший язык программирования в мире.