zmq 发表于 2020-8-12 13:44:01

20

3. 请问为什么代码 A 没有报错,但代码 B 却报错了?应该如何修改?
def outside():
    var = 5
    def inside():
      var = 3
      print(var)
      
    inside()

outside()

def outside():
    var = 5
    def inside():
      print(var)
      var = 3
      
    inside()
outside()

这个题好像小甲鱼B 为报错?但没有解释A 为啥没有报错,我觉得A 和B 一样呀,只是var=3和print(var)的位置不一样,而且A中也没有定义var为nonlocal?

海皇 发表于 2020-8-12 14:29:11

def inside():
    print(var)
    var = 3
因为B代码中输出语句不知道var等于什么报错
而A代码中输出语句知道var是等于3,所以说B代码会报错而A代码不会报错{:10_298:}
页: [1]
查看完整版本: 20