时间:2015-10-23 10:22:08

标签: python python-2.7

我有两个脚本:

scriptone.py

import scripttwo
def test():
    print "Hello World"

scripttwo.test()

scripttwo.py

def test():
    print "Hello World"
    scriptone.test()

我遇到的问题是我导入的脚本(scripttwo.py)无法访问从其导入的脚本中的函数(scriptone.py);怎么会这样做?

我不希望重构我的代码,因为我只需要能够从导入脚本的脚本中访问函数。

1 个答案:

答案 0 :(得分:1)

您可以通过重组项目或使用回调来解决此问题。

重组方法:

  • 考虑将两个脚本合并为一个
  • 考虑创建第三个脚本,其中包含其他两个脚本所需的所有内容,但不需要其中任何一个 - 然后只需在两个原始脚本中导入新脚本。

回调方法:

scriptone.py

import scripttwo
def test():
    print "Hello World"

scripttwo.test(test)

scripttwo.py

def test(callback):
    print "Hello World"
    callback()

现在,scripttwo并不真正需要查看来自scriptone的函数 - 你传递它需要作为参数调用的函数(回调)。

解决循环导入的另一种方法是使用函数变量,它看起来像这样:

scriptone.py

import scripttwo
def test():
    print "Hello World"

scripttwo.scriptone_test = test
scripttwo.test()

scripttwo.py

scriptone_test = None
def test():
    print "Hello World"
    scriptone_test()

这与回调方法非常相似,除非您不需要更改函数 - 而是在对任何scripttwo函数进行任何调用之前需要执行各种“设置”。