python变量与函数同名_儿童python教程131:Python如何在函数中使用同名的全局变量?...

我们知道,全局变量默认可以在所有函数内被访问,但是,如果当函数中定义了与全局变量同名的变量时,就会发生局部变量遮蔽(hide)全局变量的情形,例如如下程序:

name = 'Charlie'

def test ():

# 直接访问name全局变量

print(name) # Charlie

test()

print(name) 上面程序中,第 4 行直接访问 name 变量,这是允许的,此时程序将会输出 Charlie。如果在第 4 行代码之后(仍添加在函数内部)再增加如下一行代码:

name = '孙悟空'1Ea少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 再次运行该程序,将会看到如下错误:

UnboundLocalError : local variable ‘name’ referenced before assignment1Ea少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 该错误提示所访问的 name 变量还未定义。这是什么原因呢?这正是由于程序在 test() 函数中增加了“name='孙悟空'”一行代码造成的。1Ea少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

1Ea少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

python 语法规定,在函数内部对不存在的变量赋值时,默认就是重新定义新的局部变量,这会使得函数内部遮蔽重名的 name 全局变量。由于局部变量 name 在 print(name) 后才初始化,所以程序会报错。1Ea少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值