将变量从main()传递给模块

时间:2014-09-02 14:41:16

标签: python variables module

我在main()中有一个变量(var2),我想从导入模块中的函数访问它,而不将其作为参数传递。我尝试从module.py中导入vartest.py,我可以使用printFromModule2()函数访问var1(在main()之外),但不能访问var2。

我想我有两个问题:

  1. 这可以实现吗?
  2. 如果这不是我应该做的事情,那么正确的工作方式是什么?
  3. 非常感谢!

    编辑:我已尝试在模块中导入vartest.py,并且可以访问vartest.var1,但不能访问vartest.var2或vartest.main.var2--但不确定其中第二个是否是有效的Python。

    vartest.py:

    import sys
    import module
    
    var1 = 'variable 1 in vartest.py'
    def main():
        var2 = 'variable 2 inside main'
    
        print var1
        print var2
        print module.var3
        module.printFromModule(var1)
        module.printFromModule(var2)
        module.printFromModule(module.var3)
        module.printFromModule2()
    
    if __name__ == "__main__": main()
    

    module.py:

    var3 = 'variable inside module'
    
    def printFromModule(var_x1):
        print ("module print: %s" % var_x1)
    
    def printFromModule2():
        print ("module print: %s" % var2) 
    

1 个答案:

答案 0 :(得分:0)

在玩了可能的import选项之后,无论我做什么,我都无法让它工作。即使我将var2设为全局变量,并使用from module import printFromModule2将所有内容放入同一个全局命名空间,它也不适用于我。

不过,这不是一个好的编程方式。在大多数语言中使用不是特别需要的全局变量都是不受欢迎的,当你尝试在不同的模块中使用它们时,你会遇到麻烦。传递参数确实是最好的方法。