# Calling a function that imports its result from another function in Python

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