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

关于Python作用域的问题!

关于Python作用域的问题!

asdhjhg 2017-03-28 17:57:40
i = 0 def f():     print i     i = 0 f() #报错!局部变量引用之前未定义函数f里面print i,首先会先在函数内部查找是否有这个变量,而函数内部是有变量i的,但是在打印语句的后面说白了意思就是i我这local域还没绑定呢,你哪来的print?赶紧找上级! 所以按道理不应该报错啊,而是应该向上级寻找,LEGB不是应该L没有往E找,E没有找G,最后找到B,如果B没有则报错??
查看完整描述

1 回答

?
小猫过河

TA贡献26条经验 获得超15个赞

这题不是有人已经给解答过一遍了吗?f()函数下已经有本地变量( i )了,只是它位于print的后面,所以在print时,i变量没有绑定,而不是不存在这个变量,如果存在这个变量,它就不会向上查找,因为你怎么知道,不是用户定义本地变量时疏忽了呢?

所以报错远比向外查找显得聪明很多。

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

添加回答

举报

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