Python编程快速上手-global 语句

  1. 如果要在一个函数内修改全局变量,就使用 global 语句。

如果在函数的顶部有 global eggs 这样的代码,它就告诉Python:“这个函数中,eggs 指的是全局变量,所以不要用这个名字创建一个局部变量。”

示例代码:
sameName2.py

def spam():
    global eggs
    eggs = 'spam'

eggs = 'global'
spam()
print(eggs)
  • 理解思路:
    因为 eggs 前面加了 global, 所以 eggs 是全局变量,spam() 函数定义中,它被赋值为字符串 spam,这个赋值语句发生在全局作用域,所以函数定义结束后的赋值没有生效。
    调用函数 spam() 时,全局变量 eggs 的值为 ‘spam’,执行 print(eggs) 后打印出 spam 。

执行结果:
在这里插入图片描述

  1. 区分一个变量是处于局部作用域还是全局作用域的4条法则
  • 如果变量在全局作用域中使用(即在所有函数之外),它就总是全局变量。
  • 如果在一个函数中,有针。对该变量的 global 语句,它就是全局变量。
  • 如果该变量用于函数中的赋值语句,它就是局部变量。
  • 如果该变量没有用在赋值语句中,它就是全局变量。

示例代码:
sameName3.py

def spam():
    global eggs
    eggs = 'spam'

def bacon():
    eggs = 'bacon'

def ham():
    print(eggs)

eggs = 42
spam()
print(eggs)
  • 理解思路:
    spam() 函数定义中,给 eggs 加了 global,因此 eggs 是全局变量,且被赋值为 ‘spam’,往后使用到变量 eggs 时,它的值都是 ‘spam’,不能被改变。
    所以最后3行程序,只有后2句真正执行,调用 spam() 函数后,eggs 的值为 ‘spam’,打印结果自然为 spam。

执行结果:
在这里插入图片描述

  1. 在一个函数中,一个变量要么总是全局变量,要么总是局部变量

函数中的代码没办法先使用名为 eggs 的局部变量,之后又在同一个函数中使用全局 eggs 变量。

如果想在一个函数中修改全局变量中存储的值,就必须对该变量使用 global 语句。

示例代码:
sameName4.py

def spam():
    print(eggs)
    eggs = 'spam local'

eggs = 'global'
spam()

  • 理解思路:
    调用函数 spam() 时,spam() 函数中有针对 eggs 的赋值语句,因此 eggs 是局部变量。但是 print(eggs) 在赋值语句之前,此时局部变量 eggs 并不存在,所以产生错误。

执行结果:
在这里插入图片描述
(End)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值