关于change()函数的一个小问题,如何理解它的过程?

时间:2019-05-01 07:01:32

标签: python-3.x

我正在学习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中,我们不能使用函数来更改全局变量吗?

1 个答案:

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