python里面的全局变量和局部变量的区别小讲

不知道大家有没有这样的一个疑惑:


name = "head first python"
def what_happens_here():
    print(name)
    name = "python"
    name = name + "is a great book!"
    print(name)
what_happens_here()
print(name)


编译器会出现以下的错误:


>>> 
Traceback (most recent call last):
  File "C:/Users/zhangzhiwei/Desktop/domian.py", line 7, in <module>
    what_happens_here()
  File "C:/Users/zhangzhiwei/Desktop/domian.py", line 3, in what_happens_here
    print(name)
UnboundLocalError: local variable 'name' referenced before assignment
>>> 
    
有朋友可能就会疑惑啦,这到底是为什么呢?编译器给出的提示:代码的第三句的变量name没有被赋值。


其实,这是因为在what_happens_here()里,name已经被赋值为“python”了,所以编译器在处理what_happens_here()里面的name时就把ta当做局部变量,变量就会在局部变量空间找name的


名字,编译器就“懒”的出去找name是不是全局变量啦。


其他有关于python的全局变量和局部变量的区别请出门左转看博主转的一篇文章,写的很好。链接放上:http://blog.csdn.net/scuter_yu/article/details/44496423
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值