景暄 发表于 2020-12-8 11:24:44

关于全局变量申明的选择题不会做

请问有大佬可以详细解释一下为什么选这个答案吗?

sunrise085 发表于 2020-12-8 12:35:32

在函数do_local中修改的只是该函数内的局部变量,不影响它外层的局部变量,所以执行完do_local函数后print打印的依然是scope函数的局部变量,得到的是A:init
在函数do_nonlocal中声明了nonlocal,所以这里修改的loc是函数do_nonlocal的外层函数scope的局部变量,因此执行完该函数后,print打印loc得到的是 B:nonlocal
在函数do_global中声明了global,所以这里修改的loc是全局变量,全局变量不影响scope内的局部变量,因此在执行完do_global之后,print打印loc得到的是 C:nonlocal
在scope函数外,执行print打印的是全局变量loc,即在do_glocal中修改之后的loc,所以print打印的结果是 D:glocal

巴巴鲁 发表于 2020-12-8 12:48:07

A.调用scope()中的do_local()函数,此时loc的值虽然在函数内部变了,但实际上并不会修改loc的值(局部变量)
nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量
B.调用do_nonlocal()函数,此时定义loc为nonlocal,则loc变为nonlocal
C.由于loc先被定义为nonlocal类型,所以在do-global()函数后并不会改变(使用外层的loc的值)
D.使用全局变量global loc后的值
页: [1]
查看完整版本: 关于全局变量申明的选择题不会做