3.8 Python函数中的局部变量和全局变量

局部变量

你在函数定义中声明的变量,他们与在函数外使用的其它同名变量没有任何关系,即变量名称对函数来说是局部的。 这叫变量的范围。所有变量都有它们被声明的块的范围,从名称定义的点开始。

局部变量定义举例:

    
    
  1. x = 50
  2. def func(x):
  3. print('x等于', x)
  4. x = 2
  5. print('局部变量x改变为', x)
  6. func(x)
  7. print('x一直是', x)
输出:
x等于50
局部变量x改变为2
x一直是50

它是如何工作的:
第一次,我们使用函数体中第一行打印变量x的值,Python使用在主块中,函数定义上声明的实参。

接下来,我们给x赋值为2,变量为x对我们的函数来说是局部变量,因此在函数中当我们改变x的值时,在主块中定义的变量x不受影响。

最后调用的print函数,显示在主块中定义的变量x,因此证实,它不受在前面调用函数的局部变量的影响。

使用全局声明

如果你想给在顶层的程序(即未在任何类型的范围如函数或类之中)定义的变量赋值,那么你必须告诉Python,变量不是局部的,而是全局的。 我们使用global语句,没有global语句赋值给一个在函数外定义的变量是不可能的。

您可以使用这些在函数外定义的变量的值(假设在函数内没有同名的变量)。然而,这并不鼓励,应该避免,因为这使程序的读者不清楚变量是在哪里定义的,使用 global 语句就非常清楚,变量定义在一个最外的块中。

使用全局变量的例子:

    
    
  1. x = 50
  2. def func():
  3. global x
  4. print('x的值是', x)
  5. x = 2
  6. print('全局变量x改为', x)
  7. func()
  8. print('x的值是', x)
输出:
x的值是50
全局变量to改为2
x的值是2

它是如何工作的:
global语句用来声明x是全局变量,当我们在函数内给x赋值时,它的改变映射到我们在主块中使用的x的值。

用同样的global语句可以指定多个全局变量,比如: global x, y, z。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值