Python暴露于作用域 让我们考虑一个名为 mod 的模块,它的函数 Func。我想导入模块并运行func,将变量var暴露到其作用域中 a.func() # and func can do stuff with var

Python暴露于作用域 让我们考虑一个名为 mod 的模块,它的函数 Func。我想导入模块并运行func,将变量var暴露到其作用域中 a.func() # and func can do stuff with var,python,Python,如何执行此操作?最有可能的情况是,您应该向func()添加一个参数,通过该参数传入变量var。如果希望func()修改var,则让函数返回新值。(如有必要,您可以轻松地将定义了var的模块导入mod模块,或者将var作为参数传递给func()将变量传递给函数。在模块间的工作方式与在单个模块中的工作方式相同 # module a def func(v): print v # module b import a var=42 a.func(var) 如果需要修改该值,请返回它。然后调用者

如何执行此操作?

最有可能的情况是,您应该向func()添加一个参数,通过该参数传入变量var。如果希望func()修改var,则让函数返回新值。(如有必要,您可以轻松地将定义了
var
的模块导入
mod
模块,或者将
var
作为参数传递给
func()
将变量传递给函数。在模块间的工作方式与在单个模块中的工作方式相同

# 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]

实际上我不想把它传递给函数,func实际上是用来编写脚本的。我只想将一些变量作为全局变量公开给它。毕竟,这可能是最优雅的解决方案。我可能会传递一个包含所有变量的类,甚至传递一个模块。