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)

Leave a Reply