0

我希望标题足够清楚,我不知道如何表达这个。

此代码段按预期工作(7 行,输出为 1)

v=1
def test():
    print v
    for i in range (5):
        print v
v=1
test() 
print v

但是,当我尝试将 max 命令添加到函数时

v=1
def test():
    print v
    for i in range (5):
        v = max(i,v)
        print v
v=1
test() 
print v

我收到一个错误:

UnboundLocalError: local variable 'v' referenced before assignment

这一直让我感到困惑。为什么我需要v在这种情况下发送到函数?

4

1 回答 1

2

首先,如果函数使用变量,则应始终将变量传递给函数。

您遇到的问题是您试图将一个局部变量分配给vPython 认为是同一个变量,而不是全局变量。第一个功能有效,因为您没有分配任何东西。

或者,global如果您想使用全局变量并更改它,您可以使用。

def test():
    global v
    # rest of code

但是,强烈建议将变量作为参数传入。

于 2013-02-11T08:51:02.317 回答