Python:如何从主要文件中调用导入文件中的函数?

时间:2014-09-19 13:22:32

标签: python python-3.x

我发现了同样的问题,但我无法在那里评论答案。 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()

...和two.py:

def two():
    one_bis()
乌尔里希·埃克哈特(Ulrich Eckhardt)提出了一些可能性,其中有两个我感兴趣的(粗体):

  
      
  • 将公共功能移动到由其他模块导入的模块。
  •   
  • 将两个模块合并为一个。
  •   
  • 将函数从main传递给需要调用它的代码。
  •   
  • 猴子在导入后将该功能修补到检查模块中。
  •   
  • 重构整个内容,以便您不会有循环依赖。
  •   

我该如何解决这些问题?

2 个答案:

答案 0 :(得分: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(调用one())之前将以下代码添加到模块two.two()

two.two = one_bis

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

答案 1 :(得分:1)

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

# 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()