Передача переменных между скриптами
Есть 2 файла: a.py и b.py
a.py
import b
x = 12
print(b.y)
b.py
import a
y = 30
print(a.x)
но это не работает, почему и как исправить?
ошибка:
Traceback (most recent call last):
File "a.py", line 1, in <module>
import b
File "b.py", line 1, in <module>
import a
File "a.py", line 3, in <module>
print(b.y)
AttributeError: module 'b' has no attribute 'y'
нужно получить доступ в каждом скрипте к переиенным другого
Ответы (1 шт):
Автор решения: V-Mor
→ Ссылка
Давайте посмотрим на Ваш код внимательнее:
- Когда А включает В, а В, в свою очередь, включает А – это называется взаимное включение. Оно уходит в бесконечную рекурсию, т.к. А, чтобы заработать, обязательно нужно В, которому, чтобы заработать, обязательно нужно А, которому, чтобы заработать... Думаю, суть ясна. Таким образом, из-за постоянных включений, до инициализации переменных выполнение кода не доходит.
- Ответ на вопрос
как исправить
зависит от того, что именно Вам нужно получить в итоге. С этой точки зрения Ваш вопрос недостаточно конкретен, чтобы можно было ответить корректно.
- Первое решение, которое приходит в голову для того, чтобы осуществить доступ из каждого скрипта к переменным другого, – сделайте
importпрямо передprint, а не раньше, в обоих файлах. То есть, в Вашем случае, обменяйте первую и вторую строке местами в каждом файле. За результат не ручаюсь, но может помочь.