Глобальные переменные в нескольких файлах в Python
У меня есть файл 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" все еще не доступен.
Я хочу установить глобальные параметры только через функцию. Любая помощь будет принята с благодарностью! Спасибо..
2 ответа
По вашему вопросу я понимаю, что вы новичок в питоне.
При импорте модулей вы используете только имя модуля и вам не нужно включать расширение или суффикс (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
В 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)