【问题标题】:Python: How to call a function in an imported file, from the main one?Python:如何从主文件调用导入文件中的函数?
【发布时间】:2014-09-19 13:22:31
【问题描述】:

我发现了同样的问题,但我不能在那里评论答案。 Python: Calling a function from a file that has current file imported

我有一个.py:

import two

def one_bis()
    print('something')

def one():
   two.two() 

one()

...和两个.py:

def two():
    one_bis()

Ulrich Eckhardt 提出了一些可能性,其中有两个是我感兴趣的(粗体字):

  • 将通用函数移至由其他两个模块导入的模块中。
  • 将两个模块合并为一个。
  • 将函数从 main 传递给需要调用它的代码。
  • Monkey 将函数导入到 check 模块中。
  • 重构整个事情,使您没有循环依赖。

我应该如何解决这些问题?

【问题讨论】:

  • 重构你的代码,这样你就不必这样做了。

标签: python python-3.x


【解决方案1】:

这不是您“我如何以复杂的方式做到这一点?”的答案。问题,但还有另一种选择。

# one.py
import two

def one_bis():
    print('something')

def one():
   two.two()

one()

.

# two.py
def two():
    from one import one_bis
    one_bis()

如果您真的想修补模块 two,请在调用 one()(调用 two.two())之前将以下代码添加到模块 one。

two.two = one_bis

但我建议重构您的应用程序。

【讨论】:

  • 这不是“非建议的”循环依赖吗?
  • 如果你在谈论我的第一个解决方案:是的(我不会推荐它),但它是一个工作循环依赖。
【解决方案2】:

嗯,我不知道这是否有帮助,但我做了一些修补,发现对我来说,最好的方法是将它作为争论传递,我也在寻找类似的东西,所以在这里

# one.py
import two

def one_bis():
    print('something')

def one():
   a=one_bis
   two.two(a)

one()

然后

#two.py
def two(n=None):
    if n!=None:
        return n()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多