Python中的局部变量

2024-04-19 02:55:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

当我在控制台中键入g(2)(我使用的是enthught Canopy)时,它返回:

4
6

----没什么问题。 然后我将代码更改为(delete"#"before"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

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

既然我在函数g(x)中声明a是全局的,为什么变量a没有变为6=4+2(根据a=a+2)?我想当变量a是所谓的“全局”时,函数内部的值改变会导致函数外部的变化,也就是main()中的值。我错了吗?你知道吗

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


Tags: 函数代码示例键入returndef编程全局