Blizzard0319 发表于 2021-2-22 23:31:59

for语句中的变量问题

本帖最后由 Blizzard0319 于 2021-2-22 23:44 编辑

for i in range(3):
        if i==1:
                k=1
                break
        if k==1:
                print(1)

为什么运行之后显示k没有定义?是因为k是局部变量吗?可是我并没有定义函数

昨非 发表于 2021-2-22 23:34:21

因为k在for循环内部定义
在for循环外无法访问到,所以报错未定义

Blizzard0319 发表于 2021-2-22 23:37:40

昨非 发表于 2021-2-22 23:34
因为k在for循环内部定义
在for循环外无法访问到,所以报错未定义

我突然发现是我代码缩进的问题{:10_266:}

Blizzard0319 发表于 2021-2-22 23:39:37

昨非 发表于 2021-2-22 23:34
因为k在for循环内部定义
在for循环外无法访问到,所以报错未定义

for循环内部定义的变量外面应该也可以访问吧?

昨非 发表于 2021-2-22 23:39:43

Blizzard0319 发表于 2021-2-22 23:37
我突然发现是我代码缩进的问题

好家伙

昨非 发表于 2021-2-22 23:41:15

Blizzard0319 发表于 2021-2-22 23:39
for循环内部定义的变量外面应该也可以访问吧?

不可以,只在它的作用域内可以

Blizzard0319 发表于 2021-2-22 23:44:49

昨非 发表于 2021-2-22 23:41
不可以,只在它的作用域内可以

for i in range(3):
        if i==1:
                k=1
                break
if k==1:
        print(1)
那为什么我这样取消一个缩进就行了呢?

昨非 发表于 2021-2-22 23:52:27

Blizzard0319 发表于 2021-2-22 23:44
那为什么我这样取消一个缩进就行了呢?

不对不对,我上面说的不对
这个k在for循环外是可以访问的
反倒是同一缩进不同if分支之间不能访问
奇怪了

昨非 发表于 2021-2-22 23:54:54

我懂了,这个报错的原因是
第一次for循环里,i=0,if条件不满足,此时还没有执行到k=1
然后贸然执行到if k==1的判断,所以报错k未定义
页: [1]
查看完整版本: for语句中的变量问题