Глобальные переменные в нескольких файлах в 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)
Другие вопросы по тегам