我正在研究一个 python 的东西,并将变量 x*y 分配给 SecureNum。然后我定义了一个我在其中编写的函数: while R*S != SecureNum: 它吐出我在赋值之前引用 SecureNum 的错误,即使它之前已经赋值但不在函数中。我怎样才能解决这个问题?
提前致谢!乔治
我正在研究一个 python 的东西,并将变量 x*y 分配给 SecureNum。然后我定义了一个我在其中编写的函数: while R*S != SecureNum: 它吐出我在赋值之前引用 SecureNum 的错误,即使它之前已经赋值但不在函数中。我怎样才能解决这个问题?
提前致谢!乔治
可能您正在尝试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
这可能令人惊讶,因为问题不在于您正在测试该值的那一行,而是因为您正试图进一步向下重新绑定名称。
在函数的开头使用以下内容:
global SecureNum