我正在学习python的基本用法,并且在实践问题中对变量的运行方式感到困惑。这是下面的代码:
x = 1
def change(a):
a = x + 1
print(x)
change(x)
x = 1
def change(a)
x = x + 1
print(x)
change(x)
我是这样认为的: 在第一个代码中:change(x)表示:x = x + 1-打印(x)-输出:2 但实际上结果是1.因此实际过程是:x(函数中的符号)= x(全局变量)+ 1,print(x),此x是全局变量。 是吗?
在第二个代码中,我认为输出仍应为2,但它显示出UnboundLocalError:赋值之前引用了局部变量'x' 所以在python中,我们不能使用函数来更改全局变量吗?
答案 0 :(得分:0)
在函数内部,您可以读取全局变量,但不能像这样将它们显式声明为global
一样修改它们:
x = 1
def change(a):
global x # <- this is required since you're assigning a new value to x
x = x + 1
print(x)
change(x)
在第一种情况下,对于a = x + 1
,不需要全局声明,因为您只读取x
的值,而不修改它。另外,在第一种情况下,输出为1,因为您正在打印x
而不是a
。