我写了一个名为“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文件。你能告诉我哪里出错吗?
答案 0 :(得分:0)
这是因为在导入函数模块时,解释器执行 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"中那样将其导入其他地方。模块。