Python中的局部变量

时间:2016-07-01 17:13:27

标签: python global

我是一名在Python中学习编程的业余爱好者。最近,我发现了一个关于函数局部变量的问题。这是我的示例代码:

"""
Scenario-1:
"""
a=4

def g(x):
    #global a
    #a=a+2
    print(a)
    return x+a

当我在控制台中键入g(2)时(我正在使用Enthought Canopy),它会返回:

4
6

----没错。 然后我将代码更改为("#"之前删除"a=a+2")

"""
Scenario-2:
"""
a=4

def g(x):
    #global a
    a=a+2
    print(a)
    return x+a

然后重新运行代码并输入g(2),它显示:

*UnboundLocalError: local variable 'a' referenced before assignment* 

我的第一个问题是:在场景-1中,当我返回x+a时,为什么在分配之前没有引用错误?

此外,我将代码更改为:

"""
Scenario-3:
"""
a=4

def g(x):
    global a
    a=a+2
    print(a)
    return x+a

然后我重新运行代码并输入g(2),它返回:

6
8

----没错。但是,当我输入a并进入控制台时,它会返回:

4

这是我的第二个问题,关于全局变量:

因为我声明a在函数g(x)中是全局的,为什么变量a没有变为6 = 4 + 2(根据a = a + 2)?我认为当变量a被称为" global"时,函数内部的值变化将导致函数外部的变化,即main()。我错了吗?

以上是我的两个基本问题。非常感谢你!

1 个答案:

答案 0 :(得分:0)

(1)您可以引用全局变量而不声明它。但是,如果要分配值,Python需要全局声明。