为了账号安全,请及时绑定邮箱和手机立即绑定

关于Python作用域的问题!急死我了

关于Python作用域的问题!急死我了

asdhjhg 2017-03-26 20:44:15
i = 0 def f():     print i     i = 0 f()运行结果显示:UnboundLocalError: local variable 'i' referenced before assignment。在这个例子当中,函数f中的变量i是局部变量,但是在print语句使用它的时候,它还未被绑定到任何对象之上,那么接下来不是应该往上级搜寻i?这里最外面i=0应该是全局域的全局变量,而f中的i是local作用域中的局部变量。所以print使用i的时候,i还没有绑定,所以应该往全局域中找全局变量i=0啊!为什么还告诉我局部变量引用之前未定义??????求哥哥们教我!
查看完整描述

3 回答

已采纳
?
孤独的小猪

TA贡献232条经验 获得超302个赞

我理解应该是这样的,函数f里面print i,首先会先在函数内部查找是否有这个变量,而函数内部是有变量i的,但是在打印语句的后面,所以会报赋值前引用局部变量。

查看完整回答
1 反对 回复 2017-03-27
  • asdhjhg
    asdhjhg
    这个我理解了,但是内部有i,但是在print后面,说白了意思就是i我这local域还没绑定呢,你哪来的print?赶紧找上级! 所以按道理不应该报错啊,而是应该向上级寻找,LEGB不是应该L没有往E找,E没有找G,最后找到B,如果B没有则报错??
?
人笨嫌刀钝

TA贡献100条经验 获得超24个赞

i 应该声明global

查看完整回答
反对 回复 2017-03-26
  • 3 回答
  • 0 关注
  • 1571 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信