模块内的python全局变量



a.py包含:

ip=raw_input()
import b
show()

b.py包含:

def show:
    global ip
    print ip

它显示了一个错误,说明ip没有定义。如何在模块中使用主脚本中的变量?

全局声明防止通过赋值创建局部变量。它不会神奇地搜索变量。

除非将变量从一个模块导入到另一个模块,否则它在其他模块中不可用。

为了使b能够访问a的成员,您需要导入a。不能,因为a导入b

这里的解决方案可能就是根本不使用全局变量。

您的代码的结构方式,对我来说意味着您将import视为有效地将b.py的内容复制并粘贴到a.py中。然而,Python并不是这样工作的——除非通过函数或使用module.member表示法显式传递,否则一个模块内的变量和函数在另一个模块中是不可访问的。

试着这样做:

a.py:

import b
ip = raw_input()
b.show(ip)

b.py:

def show(ip):
    print ip

如果您需要在b模块中进行一些处理,请传入相关函数,进行任何更改并返回。然后,在调用模块中重新分配它们。

编辑:如果您必须使用全局变量,请将b.py更改为如下所示:

ip = None
def show(temp):
    global ip
    ip = temp
    # code here
    print ip

但更理想的做法是进行重组,这样就不会使用全局变量。

相关内容

  • 没有找到相关文章

最新更新