python中跨多个文件的全局变量

时间:2013-04-18 05:58:26

标签: python scope python-module

我有一个modules.py文件:

global dns_server_ip
def SetVnetGlobalParameters():
    dns_server_ip = '192.168.3.120'

我在abc.py文件中导入此文件

from modules import *
SetVnetGlobalParameters()
print(dns_server_ip)

但'dns_server_ip'仍无法访问。

我想通过Function设置全局参数。任何帮助将不胜感激! 感谢..

2 个答案:

答案 0 :(得分:10)

根据你的问题,我知道你是python的初学者。

导入模块时,您只使用模块名称,不需要包含扩展名或后缀(py),在您的代码中,您会错过起始单引号。

这是您修改后的代码: 它是modules.py

dns_server_ip = ''
def SetVnetGlobalParameters():
    global dns_server_ip
    dns_server_ip = '192.168.3.120′

这是你的abc.py

import modules 
modules.SetVnetGlobalParameters()
print modules.dns_server_ip

这里通过global关键字我们告诉python解释器改变或指出全局变量而不是局部变量,并且变量总是globallocal如果变量是两者(本地和全局)你会得到python UnboundLocalError异常,如果你没有把那个全局关键字

global dns_server_ip

将创建dns_server_ip作为新的局部变量。关键字global仅适用于函数

您可以查看global keywordpython modules

答案 1 :(得分:3)

在modules.py

dns_server_ip = None
def SetVnetGlobalParameters():
    global dns_server_ip
    dns_server_ip = '192.168.3.120'

在abc.py

import modules
modules.SetVnetGlobalParameters()
print(modules.dns_server_ip)