如何处理python中的变量范围

时间:2012-11-06 02:54:16

标签: python function scope

我有一个python模块,其中包含用于生成大型数组的代码,它包含多个用于执行此操作的函数。这就是我现在的方式:

var1 = 0
var2 = 0
var3 = 0
var4 = 0
var5 = 0
var6 = 0
def main():
    foo()
    moo(var1,var2)
    noo(var6)
def foo():
    Math using vars
def moo():
    More math
def noo():
    More math

但是,我不能使用变量1-6而不首先在它们内部违反它们各自的函数,因为它会抛出“赋值前引用”异常。似乎最好的方法是使用全局,但这似乎是非常不赞成的。为什么全球不推荐?在这里使用它是否可以接受?我该怎么办呢?

2 个答案:

答案 0 :(得分:1)

您需要将这些变量定义为要在函数中使用的全局变量。这是一个例子。 Using global variables in a function other than the one that created them

答案 1 :(得分:0)

最好将变量作为参数传递给那些函数:

def main(var1, var2, var3, var4, var5, var6):
    foo(var1, var2, var3)
    moo(var2,var3)
    noo(var5)
    ...

def foo(var1, var2, var3):
    Math using vars
def moo(var2, var3):
    More math
def noo(var5):
    More math

然后用所有6个参数调用main。