首页
新闻
会员
周边
捐助
园子
·
关注
·
粉丝
·
会员
·
随便看看
·
消息
欢迎,请先
登录
或者
注册
。
登录
/
注册
闪存
博客
发言
小组
投递
新闻
提问
博问
添加
收藏
文库
问题反馈
问题列表
我关注的
我的博问
博问标签
执行以下代码,结果输出为()
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*
|
小虾三级
|
园豆:
1152
提问于:2025-11-20 10:41
显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
<
>
分享
分享您的问题
所有回答(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
编辑文本
预览
上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要
登录
以后才能回答,未注册用户请先
注册
。