首页 > 试题广场 >

【问题】执行以下代码,结果输出为() num = 1 def

[单选题]
【问题】执行以下代码,结果输出为()

num = 1

def fn():

num += 1

return lambda:print(num)

x = fn()

x()

  • 报错

  • 2
  • None
  • 1
函数内部修改同名全局变量需要使用global关键字声明,即global num num+=1,否则报UnboundLocalError
编辑于 2022-01-07 17:43:50 回复(1)
一开始很纳闷,后面查了一下,发现是num+=1报错了,python中在局部不可以改变全局变量,编译不通过
发表于 2021-12-13 11:47:22 回复(6)
发表于 2023-02-05 01:08:26 回复(0)
函数内部修改同名的全局变量需要使用global关键字声明,
否则会因为变量在函数内部未被赋值就直接引用而抛出异常显示UnboundLocalError
发表于 2023-01-04 18:29:47 回复(0)
UnboundLocalError: local variable 'num' referenced before assignment
函数里对全局num进行运算,存储位置改变,函数引用全局进行运算,不改变全局的,需要使用global,代码如下
global num
num+=1
其它代码不变
发表于 2022-05-19 19:35:42 回复(0)
UnboundLocalError: local variable 'n' referenced before assignment
发表于 2022-03-20 23:45:49 回复(0)
python会先在函数内部寻找局部变量,如果没有才会找到外部的全局变量。函数内部也是需要先定义赋值,才能引用(a=a+1)。即函数内外部要分开,局部变量和全局变量。函数内部不允许修改全局变量,若要改需要加global
发表于 2022-10-24 15:28:14 回复(0)
报错提示:UnboundLocalError: local variable 'num' referenced before assignment
发表于 2023-09-06 16:13:56 回复(1)
歪个楼,如果把代码修改好,为什么直接调用fn()是输出lambda函数的信息,而将fn()赋值给x再调用x()就能输出数字呢?
发表于 2023-07-04 16:19:49 回复(1)
首先这个代码的缩进就有问题吧
发表于 2023-06-26 15:10:21 回复(0)
不知道函数内部不能修改全局变量
发表于 2023-04-05 03:51:45 回复(0)

函数内部修改全局变量,要使用global关键字来声明,即global num num +=1

编辑于 2022-08-22 21:44:52 回复(0)
python中在局部不可以改变全局变量,编译不通过,函数内部修改同名全局变量需要使用global关键字声明,即global num num+=1,否则报UnboundLocalError
发表于 2022-07-27 22:00:37 回复(0)
。。。一会有毛病,一会没毛病
发表于 2022-07-03 16:37:53 回复(0)
python中在局部不可以改变全局变量,编译不通过
发表于 2022-06-08 11:14:14 回复(0)
必须要赋值或者声明全局变量
发表于 2022-06-02 20:49:21 回复(0)
函数体内部的局部变量想要使用外部定义的全局变量,需要加保留字global去实现,否则num = num + 1 就会报函数没有定义
发表于 2022-05-09 11:12:33 回复(1)
第三行的num在复制之前就被使用,需要先进行global赋值
原   num += 1
global
num += 1
发表于 2022-03-22 23:18:52 回复(0)