我正在处理python的事情,我将变量x * y分配给SecureNum。然后我定义了一个函数,我在其中编写:当R * S!= SecureNum时:它会在分配之前吐出我引用SecureNum的错误,即使它已经提前分配但不在函数中。我该如何解决这个问题?
提前致谢! 乔治
答案 0 :(得分: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
这可能是令人惊讶的,因为问题不在于你真正在测试价值的那一行,而是因为你试图进一步重新命名这个名称。
答案 1 :(得分:0)
在功能开头使用以下内容:
global SecureNum