Объект 'float' не может быть вызван, лямбда без аргументовPython

Программы на Python
Anonymous
Объект 'float' не может быть вызван, лямбда без аргументов

Сообщение Anonymous »

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

Код: Выделить всё

class uniform:
def __init__(self,a,b)
self.a=a
self.L=b-a

def __call__(self,randfun):
f=lambda : self.a+self.L*randfun()
return f

@uniform(-1,1)
def gen():
from random import random
return random()
#print 5 random numbers
for _ in range(5):
print(gen())
Если я удалю эту лямбду, что приведет к f=self.a+self.L*randfun(), я получу ошибку такого типа: Произошло исключение: TypeError 'float' объект не может быть вызван. Почему это происходит? То же самое, если я верну self.a+self.L*randfun(), но ничего не произойдет, если я выполню print(self.a+self.L*randfun()).
Почему эта лямбда-функция без аргументов важна для этого фрагмента кода? Что он делает?

Подробнее здесь: https://stackoverflow.com/questions/785 ... -arguments

Вернуться в «Python»