python - 将 Python 函数移至模块而不破坏兼容性或循环导入

标签 python python-import

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

由于循环导入,这将不起作用:从其他地方导入 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/

相关文章:

python - h2o python 的 one_hot_explicit 参数引发错误

python - 如何获得对 Pocket Sphinx 转录的信心

python - 导入与现有包相同的模块

python - Django 测试模型根据它们的位置加载?

python - 将备用 flake8 规则应用于文件子集

python - 如何在 Python 中对字典中的值进行排序?

Python-Argparse : Calling the help argument returns an error

python - 在 Python 中正确导入模块

python import 只能以一种格式工作

Python 在 for 循环中全局导入(最好是 Python 3.x)