关于Python作用域的问题!

i = 0
def f():
    print i
    i = 0
f()
#报错!局部变量引用之前未定义

函数f里面print i,首先会先在函数内部查找是否有这个变量,而函数内部是有变量i的,但是在打印语句的后面

说白了意思就是i我这local域还没绑定呢,你哪来的print?赶紧找上级! 所以按道理不应该报错啊,而是应该向上级寻找,LEGB不是应该L没有往E找,E没有找G,最后找到B,如果B没有则报错??

asdhjhg
浏览 1265回答 1
1回答

小猫过河

这题不是有人已经给解答过一遍了吗?f()函数下已经有本地变量( i )了,只是它位于print的后面,所以在print时,i变量没有绑定,而不是不存在这个变量,如果存在这个变量,它就不会向上查找,因为你怎么知道,不是用户定义本地变量时疏忽了呢?所以报错远比向外查找显得聪明很多。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python