Передача переменных между скриптами

Есть 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

Давайте посмотрим на Ваш код внимательнее:

  1. Когда А включает В, а В, в свою очередь, включает А – это называется взаимное включение. Оно уходит в бесконечную рекурсию, т.к. А, чтобы заработать, обязательно нужно В, которому, чтобы заработать, обязательно нужно А, которому, чтобы заработать... Думаю, суть ясна. Таким образом, из-за постоянных включений, до инициализации переменных выполнение кода не доходит.
  2. Ответ на вопрос

как исправить

зависит от того, что именно Вам нужно получить в итоге. С этой точки зрения Ваш вопрос недостаточно конкретен, чтобы можно было ответить корректно.

  1. Первое решение, которое приходит в голову для того, чтобы осуществить доступ из каждого скрипта к переменным другого, – сделайте import прямо перед print, а не раньше, в обоих файлах. То есть, в Вашем случае, обменяйте первую и вторую строке местами в каждом файле. За результат не ручаюсь, но может помочь.
→ Ссылка