@ brunodesthuilliers, как бы вы избежали циклических зависимостей в этом случае?
Я бы сначала спросил, почему f1 хочет вызвать функцию в f2, которая хочет прикоснуться к переменной в f1 , Поскольку все, что у нас есть, это игрушечный пример вне контекста, невозможно дать один универсальный ответ, но есть как минимум три основных решения:
1. переместить функцию f2.function назад в f1.
Если оба должны знать друг друга так близко, зачем разделять их?
f1.py:
def function():
a.extend([2, 3, 4]])
a = []
f2.py
import f1
f1.function()
print(f1.a)
2. переместить вызов функции f2. в другом модуле f3
поэтому f1 не должен знать о f2.
f1.py
a = []
f2.py
import f1
def function():
f1.a.extend([2, 3, 4]])
f3.py
import f1
import f2
# this is really ugly... spooky action at distance.
f2.function()
print(f1.a)
3. измените f2.function, чтобы она принимала a
в качестве аргумента
, чтобы f2 не знал о f1
f1.py
import f2
a = []
f2.function(a)
f2.py
def function(a):
a.append([2, 3, 4])