2014-09-02 103 views
-1

我在main()中有一個變量(var2),我想從一個導入模塊中的函數訪問,而不將它作爲參數傳遞。我已經嘗試從module.py中導入vartest.py,並且可以使用printFromModule2()函數訪問var1(即main()之外),但不能使用var2。從main()傳遞變量到模塊

我想我有兩個問題:

  1. 才能實現這一目標?
  2. 如果這不是我應該做的事,那麼正確的工作方式是什麼?

非常感謝!

編輯:我已經嘗試在模塊中導入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) 
+0

您無法訪問該函數之外的函數局部變量。 – chepner 2014-09-02 14:51:10

回答

0

有可能import選項玩弄後,我不能得到這個不管我做什麼工作。即使我使var2成爲一個全局變量,並使用from module import printFromModule2將所有內容放入同一個全局命名空間,它也不適用於我。但是,這並不是真正的編程方式。在大多數語言中,只要不特別需要使用全局變量,當你嘗試在不同的模塊中使用全局變量時,你就會遇到麻煩。傳遞參數確實是最好的方法。

+0

謝謝你的解釋 - 我仍在學習最佳實踐,所以這是有價值的信息。將遠離全局變量並傳遞更多。 – Oli 2014-09-02 14:56:39

+0

@Oli這是個好主意。當你編程更多的時候,你會學到一些全局變量真的很有用的場景(比如互斥鎖),但是最好還是儘量遠離。 – TheSoundDefense 2014-09-02 15:04:00

相關問題