我如何使用 python3.4 中的模块访问变量

How can i access variables using modules in python3.4

我写了一个名为"Functions.py"的文件,它包含以下代码。

def foo(x,y):
    global a
    a=42
    x,y=y,x
    b=33
    b=17
    c=100
    print(a,b,x,y)
a,b,x,y = 1,15,3,4
foo(17,4)
print(a,b,x,y)

现在,我正在尝试将此函数导入另一个名为 "modulepractice.py".

的文件中
import Functions
print(Functions.a)

当我执行 "modulepractice.py" 时,输出为

42 17 4 7
42 15 3 4
42.

我的疑问是我只打印 "a" 但在输出中它正在执行整个 Functions 文件。你能告诉我哪里错了吗?

这是因为在导入 Functions 模块时,您的解释器会执行 foo 函数之外的语句,即

a,b,x,y = 1,15,3,4
foo(17,4)
print(a,b,x,y)

因此,输出的前两行分别对应于对 foo 函数print 语句的调用。

如果您不想要前两行输出,请将这些语句包装到 if __name__ == "__main__": 块中

if __name__ == "__main__":
      foo(17,4)
      print(a,b,x,y)

在这种情况下,只有当您直接执行 "Functions.py" 模块时才会调用这些语句,而不是像在 "modulepractice.py" 模块中那样将其导入其他地方时调用。