如何在导入的模块中设置命名空间?

时间:2013-06-10 08:02:15

标签: python python-2.7 python-3.x pyqt pyside

我需要从导入模块中的函数调用main app函数。

因为,导入它拥有自己的命名空间,它会输出一个名称错误:"全局名称......等等,等等......没有定义。"

main.py:

from imported import importedFunction

def mainFunction():
    print "MainFunction"

importedFunction()

imported.py:

def importedFunction():
    print "importedFunction"
    mainFunction()

我需要importlib方法吗?请帮我解决。

2 个答案:

答案 0 :(得分:2)

我认为你不明白命名空间是什么。

例如,要在导入的模块上使用命名空间,请执行以下操作:

from imported import importedFunction as func

然后在您的其余代码中,您可以引用到导入的函数,只需func

此外,在您的代码中,您尝试从模块中不包含mainFunction的模块调用mainFunction,导入importedFunction的事实确实如此不要让它访问模块中的函数,因为它仍然在自己的模块中运行。

除非您将mainFunction导入到导入的模块中,否则您将创建一个无限循环....这通常是不受欢迎的。

所以回答你“我需要从导入模块中的函数调用main app函数”。除非您将模块导入导入的模块中,否则这是不可能的......

答案 1 :(得分:1)

您可以在那里导入该功能,但它不一定是最佳解决方案:

imported.py:

def importedFunction():
    print "importedFunction"

    from main import mainFunction
    mainFunction()

你应该从你的函数中的main导入,因为除非它你的导入中有一个循环。