# how to return multiple variations of function in python

## Question:

How can I write the following code so that not all functions are the same?

```
>>> def g(x):
... l = []
... for i in range(1,10):
... def f(x):
... return x + i
... l.append(f)
... return l
```

The idea should be that `g`

returns a list of 9 functions where the first function returns `x+1`

the second `x+2`

etc. However, since in python everything is an object all previous function definition will be overwritten. How can I solve this?

## Answers:

This does not overwrite the functions in the final list

```
def make_f(x, i):
def f():
return x + i
return f
def g(x):
l = []
for i in range(1, 10):
l.append(make_f(x, i))
return l
for f in g(10):
print f()
11
12
13
14
15
16
17
18
19
```