调用从 Python 中的另一个函数导入其结果的函数

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

我在 Python f1 中有一段代码创建了两个函数,第二个函数从第一个函数获取结果:

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)

另一个使用这些函数的代码 f2,都是从第一个代码导入的:

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)

函数fS给出两个数的和。函数 fM 给出乘以前一个求和结果的乘积。在 f2 中,两个数字都应在第一个函数之前加 1。 运行 f1,它给出 yw 的正确结果:

7
84

但是运行 f2,它给出了f1的结果和f2的结果:

7
84
12
420

结果是正确的,但我的意图是只打印 f2 的结果(p = 12 和 q = 420)当 运行 它而不是前两个结果(7 和 84)时:

12
420

我试图通过在设置ab的值之前在f1中插入语句if __name__ == '__main__':来解决它,但是得到了一个错误信息:name 'a' is not defined in y = fS(a,b) 因为 运行 f2 无法读取这些值。我在这里错过了什么?有没有一种方法可以在不创建新文件的情况下做到这一点?

尝试将整个代码包装在 f1 中的 defs 之外。将 f1 更改为此代码后,它应该可以工作。



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)

一个解决方案是简单地从 f1.
中删除 print 函数 如果您仍希望能够打印这些值,但仅在需要时打印,只需在 f1 中创建函数,如下所示:

def printFirstFunction(a, b):
    print(fS(a,b))

def printSecondFunction(a, b, y):
    print(fM(a,b,y))

并仅在需要打印这些值时调用这些函数。

要解决您编写 main 函数的问题,您也应该提供该代码。您很可能忘记初始化这些变量,或者您在声明它们之前定义了函数,但如果您不向我们展示该代码,我们无法判断。