在不破坏兼容性或循环导入的情况下将Python函数移动到模块

在不破坏兼容性或循环导入的情况下将Python函数移动到模块,python,python-import,Python,Python Import,考虑一个Python模块fmod.py: def f(x): print(x) def g(): f("g") import fmod def g(): fmod.f("g") 现在,应该将g()函数移动到gmod.py: def f(x): print(x) def g(): f("g") import fmod def g(): fmod.f("g") “保持”fmod.g()向后兼容的最佳方法是什么 尝试(a) 这将

考虑一个Python模块
fmod.py

def f(x):
     print(x)

def g():
     f("g")
import fmod

def g():
    fmod.f("g")
现在,应该将
g()
函数移动到
gmod.py

def f(x):
     print(x)

def g():
     f("g")
import fmod

def g():
    fmod.f("g")
“保持”fmod.g()向后兼容的最佳方法是什么


尝试(a)

这将不起作用,因为循环导入:
从别处导入gmod
失败


(b)

由于同样的问题,这仍然不起作用


(c)

我认为这是可行的,但相当复杂


有更好的方法吗?

您可以使用上一个选项,也可以通过以下方式编辑
\uuuu init\uuuuuuuuuuy.py
文件:

import fmod
import gmod

fmod.g = gmod.g
然后您将能够执行以下操作:

import fmod

fmod.g('x')   #@UndefinedVariable
import fmod

fmod.g('x')   #@UndefinedVariable