Python模块变量到当前工作区


Python module variables into current workspace

正如我之前提到的,我最初来自Matlab背景,然后在发现Python之前转到了PHP。在Matlab和PHP中,都有创建脚本的方法,当运行时,所有变量都会转储到当前工作空间中。Matlab中的工作空间是从那里调用时的解释器,或者是从函数调用时的函数工作空间。我会将这种功能用于常量——例如,打印工具,您想在其中定义一组默认字体、线宽等。

现在在Python中,我可以导入一个模块,但该模块中的所有引用常量都需要from {module} import *{module}.{constant}

这并没有真正限制我,只是一种不便。然而,如果能够导入一个常量文件,并且只为任何调用它们的对象提供常量,那就太好了。

我怀疑Python不允许这样做,但我想我会问一下是否有人有聪明的方法。

这不是你通常应该做的事情,只是为了节省一点打字,但这里有一种方法可以做到:

# define some constants
PI = 3.1415927
ANSWER = 42
UNLUCKY = 13
# put them into __main__ module (your interactive session)
if __name__ != "__main__":
    import sys as _sys
    _sys.modules["__main__"].__dict__.update(
        dict((k, v) for (k, v) in globals().iteritems() if not k.startswith("_")))

我不确定你的问题,但也许你的IDE可以帮助你摆脱这些导入。例如,在Spyder中,您可以执行一个启动脚本,该脚本将在启动新控制台时运行。将您的导入放置在那里将提供对这些文件的直接访问。