我如何使用 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" 模块中那样将其导入其他地方时调用。
我写了一个名为"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" 模块中那样将其导入其他地方时调用。