Python回调到主模块(函数和变量)

Python回调到主模块(函数和变量),python,Python,我正在尝试创建一个模块,该模块提供一个框架,用于缩短我编写的声明性单文件脚本。在简短的脚本中,我想定义一些由框架模块访问或调用的变量和函数 我被卡住了。。。我尝试过两种方法,但我对其中任何一种都不感兴趣。有更好的办法吗 第一种方法: 框架模块: import __main__ def test(): print __main__.var print __main__.func() def test(glob): print glob['var'] print g

我正在尝试创建一个模块,该模块提供一个框架,用于缩短我编写的声明性单文件脚本。在简短的脚本中,我想定义一些由框架模块访问或调用的变量和函数

我被卡住了。。。我尝试过两种方法,但我对其中任何一种都不感兴趣。有更好的办法吗

第一种方法:

框架模块:

import __main__
def test():
    print __main__.var
    print __main__.func()
def test(glob):
    print glob['var']
    print glob['func']()
脚本:

import framework
var="variable"
def func():
    print "function"
framework.test()
import framework
var="variable"
def func():
    print "function"
framework.test(globals())
我喜欢这种方法,而且它是有效的,但是eclipse在从main导入的任何变量或函数上都给了我一个“Undefined variable from import:var”错误。显然,这在工作时是不正确的,但它会给eclipse带来许多错误

第二种方法:

框架模块:

import __main__
def test():
    print __main__.var
    print __main__.func()
def test(glob):
    print glob['var']
    print glob['func']()
脚本:

import framework
var="variable"
def func():
    print "function"
framework.test()
import framework
var="variable"
def func():
    print "function"
framework.test(globals())
这似乎有效,不会给我错误,但我不喜欢用于调用变量和函数的字典类型符号。。。特别是函数:func'funcName'


有没有更好的方法来实现这一点,从而产生干净的代码?我可以将模块名(即main)作为参数传递给函数吗?第一种方法的main上的Eclipse错误可以关闭吗?

我采用了第一种方法,并告诉Eclipse在出现此错误的每一行上按command+1(对于我的Mac,对于Windows,它将是ctrl+1),忽略导入错误中的未定义变量

命令+1将以下注释添加到每行末尾:

# @UndefinedVariable

感谢@ekhumoro在评论中指出了这一点。

如何看待
deftest(var,func):
在模块中,以及
framework.test(var,func)
在脚本中?或者您的示例是一个简化的示例,而您的实际代码有很多依赖项,为每个依赖项传递一个变量会很麻烦?是的,这是一个过于简化的示例。。。将会有许多变量和函数。OT:glob是一个不好的变量名…使用
\uuuuu main\uuuuu
似乎是一个完全合理的解决方案。有关日食的废话,请参阅。@ekhumoro谢谢!命令+1可以忽略未定义的变量错误