4

I have a modules.py file :

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

And I’m importing this file in say abc.py file

from modules import *
SetVnetGlobalParameters()
print(dns_server_ip)

But ‘dns_server_ip’ is still not accessible.

I want to set global parameters through Function only. Any help would be greatly appreciated! Thanks..

4

2 回答 2

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 解释器更改或指出全局变量而不是局部变量,并且始终变量将是global或者local 如果变量是(局部和全局),你将得到 python UnboundLocalError 异常,如果你这样做了不要放那个全局关键字

global dns_server_ip

dns_server_ip 将被创建为一个新的局部变量。global仅用于函数中的关键字

你可以检查全局关键字python模块

于 2013-04-18T06:32:23.210 回答
3

在模块.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)
于 2013-04-18T06:02:52.873 回答