我是学习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()中的值。我错了吗?你知道吗
以上是我的两个基本问题。非常感谢你!你知道吗
(1)可以引用全局变量而不声明它。但是,如果要赋值,Python需要全局声明。你知道吗
相关问题 更多 >
编程相关推荐