考虑一个Python模块fmod.py
:
def f(x):
print(x)
def g():
f("g")
现在,
g()
函数应移至gmod.py
:import fmod
def g():
fmod.f("g")
保持“
fmod.g()
”向后兼容性的最佳方法是什么?尝试a)
from gmod import g
def f(x):
print(x)
由于循环导入,此操作将无效:来自其他位置的
import gmod
失败。尝试b)
import gmod
def f(x):
print(x)
g = gmod.g
由于相同的问题,这仍然不起作用。
尝试c)
def f(x):
print(x)
def g(*args, **kwargs):
import gmod
return gmod.g(*args, **kwargs)
我认为这有效,但是相当复杂。
有没有更好的办法?
最佳答案
您可以使用最后一个选项,也可以通过以下方式编辑__init__.py
文件:
import fmod
import gmod
fmod.g = gmod.g
然后,您将可以执行以下操作:
import fmod
fmod.g('x') #@UndefinedVariable
关于python - 将Python函数移至模块而不会破坏兼容性或循环导入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57850670/