I have a code in Python f1 that creates two functions, the second function gets the result from the first one:

```
a = 3
b = 4
def fS(a,b):
x = a+b
return x
y = fS(a,b)
print(y)
def fM(a,b,y):
z = a*b*y
return z
w = fM(a,b,y)
print(w)
```

And another code f2 that uses these functions, both imported from the first code:

```
from f1 import *
a = 6
b = 4
c = a+1
d = b+1
p = fS(c,d)
print(p)
q = fM(c,d,p)
print(q)
```

Function `fS`

gives the sum of two numbers. Function `fM`

gives the product multiplied by the previous result of the sum. In f2, both numbers should be added by 1 before the first function. Running f1, it gives the correct result for `y`

and `w`

:

```
7
84
```

But running f2, it gives the result from f1 and results from f2:

```
7
84
12
420
```

The results are correct but my intention is to print only the results from f2 (p = 12 and q = 420) when running it and not those first two results (7 and 84):

```
12
420
```

I tried to solve it by inserting the statement `if __name__ == '__main__':`

in f1 before setting the values of `a`

and `b`

, but got an error message: `name 'a' is not defined`

in `y = fS(a,b)`

because these values cannot be read by running f2. What am I missing here? Is there a way I could do it without creating a new file?

### >Solution :

Try wrapping whole code outside defs in f1 in that if. After changing f1 to this code, it should work.

```
def fS(a,b):
x=a+b
return x
def fM(a, b ,y):
z=a*b*y
return z
if __name__ == '__main__':
a = 3
b = 4
y = fS(a,b)
print(y)
w = fM(a, b, y)
print (w)
```