2011-08-09 363 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]