考虑一个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/

10-10 23:51