首页 新闻 会员 周边 捐助

执行以下代码,结果输出为()

0
[已关闭问题] 关闭于 2025-11-20 10:42
复制代码
num = 1
def fn():
    num += 1
    return lambda:print(num)
x = fn()
x()
复制代码
A 报错
B 2
C None
D 1
*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1152
提问于:2025-11-20 10:41
< >
分享
所有回答(1)
0
正确答案:A
官方解析:
这道题目考察了Python中函数作用域和变量访问的知识点。代码会报错,因此A是正确答案。

具体分析原因:
1. 在fn()函数中,使用了num += 1语句。这等同于num = num + 1
2. 按照Python的变量作用域规则,当在函数内部对变量进行赋值操作时,Python会将其视为局部变量
3. 但是此处num在赋值前就被使用(num + 1的操作),而局部作用域中并没有num的定义,这会导致UnboundLocalError错误
4. 如果要在函数内部修改全局变量,需要使用global关键字声明,正确写法应该是:
def fn():
global num
num += 1
return lambda:print(num)
 
在 Python 中,只要在一个函数内部出现了对某个变量的赋值操作(即 = 号),Python 就会默认这个变量是该函数的局部变量 —— 即使这个赋值出现在变量被“读取”之后。
*Tesla* | 园豆:1152 (小虾三级) | 2025-11-20 10:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册