Python как сделать что бы импортированный файл видел присвоеное значение?

Есть два файла test и test1. В test есть код:

from test1 import*
n=1
print(mp)

Во втором:

def mp():
    print(n)
mp()

В test ошибка: name 'n' is not defined. Как исправить? И почему она возникла?


Ответы (1 шт):

Автор решения: Кирилл Малышев

Так не выйдет. test1 выполняется в момент импорта и не видит n, которая инициализируется после импорта.

Он не увидит её, даже если сделать импорт после

n=1
from test1 import *

т.к. глобальные переменные видны только внутри модуля.

Можно попытаться задать переменную для конкретного модуля

import test1
test1.n=1

Но проблема в том, что для доступа к модулю всё равно нужно его импортировать до установки значения, а значит будет ошибка.

Вариантом остаётся установка переменной окружения, которая будет доступна между модулями.

test:

import os
os.environ['n'] = '1'
from test1 import*

test1:

import os

def mp():
    print(os.environ['n'])
mp()
→ Ссылка