【问题标题】:How to set namespace in imported module?如何在导入的模块中设置命名空间?
【发布时间】:2013-06-10 08:02:15
【问题描述】:

我需要从导入模块中的函数调用主应用程序函数。

由于导入有自己的命名空间,它会打印一个名称错误:“global name...blah, blah..is not defined.”

main.py:

from imported import importedFunction

def mainFunction():
    print "MainFunction"

importedFunction()

导入的.py:

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

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

【问题讨论】:

  • 请提供您得到的实际错误代码,如果可能,请提供堆栈跟踪。

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


【解决方案1】:

我想你不明白命名空间到底是什么。

例如,要在导入的模块上使用命名空间,您可以这样做:

from imported import importedFunction as func

然后在您的其余代码中,您可以引用导入的函数,就像 func 一样简单。

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

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

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

【讨论】:

    【解决方案2】:

    你可以在那里导入函数,但这不一定是最好的解决方案:

    导入的.py:

    def importedFunction():
        print "importedFunction"
    
        from main import mainFunction
        mainFunction()
    

    您应该在函数中从 main 导入,因为除非它,否则您的导入中会有一个循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 2021-03-20
      • 2016-04-27
      • 2012-05-28
      相关资源
      最近更新 更多