使用def()语句中函数外部定义的变量

时间:2013-10-22 00:33:37

标签: python

我正在处理python的事情,我将变量x * y分配给SecureNum。然后我定义了一个函数,我在其中编写:当R * S!= SecureNum时:它会在分配之前吐出我引用SecureNum的错误,即使它已经提前分配但不在函数中。我该如何解决这个问题?

提前致谢! 乔治

2 个答案:

答案 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