2011-08-09 237 views
0

讓我們考慮一下我們有一個叫做mod的模塊,它具有函數func。我想導入模塊並運行func,將變量var暴露給它的範圍。Python暴露在範圍內

a.func() # and func can do stuff with var 

我該怎麼做?

+0

我實際上並不想將它傳遞給函數,func實際上是用於腳本的。我只是想將一些變量暴露爲全局變量。 – nikitautiu

回答

2

您可以將定義var的模塊導入mod模塊,或者將var作爲參數傳遞給func()

+0

畢竟這可能是最優雅的解決方案。我可能傳遞一個包含所有變量的類,甚至傳遞一個模塊。 – nikitautiu

0

最有可能的是,你應該添加一個參數給func(),通過它傳入變量var。如果你想讓func()修改var,那麼讓函數返回新的值。 (如有必要,您可以輕鬆擁有multiple return values)。

0

將變量傳遞給函數。在模塊中工作與在單個模塊中一樣。

# module a 
def func(v): 
    print v 

# module b 
import a 
var=42 
a.func(var) 

如果您需要修改該值,請將其返回。然後調用者可以將它放在任何他們想要的地方,包括回到同一個變量中。

# module a 
def func(v): 
    return v + 1 

# module b 
import a 
var=42 
var = a.func(var) # var is now 43 

一些對象,如列表,是可變,並且可以由函數來改變。你不必返回這些。有時返回它們很方便,但我會在沒有的情況下顯示它。

# module a 
def func(v): 
    v.append(42) 

# module b 
import a 
var=[]  # empty list 
a.func(var) # var is now [42]