0

我正在研究一个 python 的东西,并将变量 x*y 分配给 SecureNum。然后我定义了一个我在其中编写的函数: while R*S != SecureNum: 它吐出我在赋值之前引用 SecureNum 的错误,即使它之前已经赋值但不在函数中。我怎样才能解决这个问题?

提前致谢!乔治

4

2 回答 2

6

可能您正在尝试SecureNum稍后在该功能中分配

因为您尚未声明SecureNum为全局变量,而 Python 看到您正在分配给它,所以它强制它成为局部变量。

SecureNum = 12345

def f(R, S):
    if R * S != SecureNum: #<== local SecureNum shadows the global one
        ...
    ...
    SecureNum = ...        #<= This means SecureNum is a local 


def g(R, S):
    global SecureNum
    if R * S != SecureNum: #<== now this is the global SecureNum
        ...
    ...
    SecureNum = ...        #<= and so is this one

这可能令人惊讶,因为问题不在于您正在测试该值的那一行,而是因为您正试图进一步向下重新绑定名称。

于 2013-10-22T00:37:25.830 回答
0

在函数的开头使用以下内容:

global SecureNum
于 2013-10-22T00:36:15.090 回答