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

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啊!为什么还告诉我局部变量引用之前未定义??????求哥哥们教我!

asdhjhg
浏览 1572回答 3
3回答

孤独的小猪

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

人笨嫌刀钝

i 应该声明global
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python