不知道大家有没有这样的一个疑惑:
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
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