python中的“from import”

2024-04-20 11:08:37 发布

您现在位置:Python中文网/ 问答频道 /正文

有两个模块。Python2.7中的代码

m1.py:

x=2
__y__=5

def foo():
    print x

m2.py:

^{pr2}$

我的问题是m2.py中的foo函数如何从m1.py中知道x的值。根据我的理解,“from m1 import foo”将m1.foo分配给m2.py中的foo。我没有从m1导入x。 谢谢


Tags: 模块函数代码frompyimportfoodef
1条回答
网友
1楼 · 发布于 2024-04-20 11:08:37

这一切都是所谓的范围问题,在某种程度上取决于Python中赋值的工作方式。每个模块都有自己的命名空间(把它想象成一个框),其中您在其中定义的变量是有效的。在

x = 0

m1.py中的此变量称为全局变量,这意味着m1.py模块中的所有其他对象都可以看到并使用它,例如:

^{pr2}$

当您将foo导入m2.py并调用foo函数时,它正在访问m1.py中定义的x。因为在m2.py中还没有定义x,如果您试图引用它,您将得到一个错误。即使将x赋给m2.py中的另一个值,foo函数仍将打印0,因为它正在从m1.py访问x。在

相关问题 更多 >