Can someone explain why in the following example all functions are the same after running? Is there a way to avoid this and get the distinct function I want (please don't suggest using partial).
def lin_fun(x, a, b):
return a*x + b
funs = {}
params = [(1,2), (3,4)]
for param in params:
funs[param] = lambda x: lin_fun(x, *param)
print(funs[params[0]](100))
# prints 304
print(funs[params[1]](100))
# prints 304