小甲鱼python课后作业019-小甲鱼零基础python课后题 P20 019函数:我的地盘听我的...

测试题

0.如果希望在函数中修改全局变量的值,应该使用什么关键字?

答:globe

1.在嵌套函数中,如果希望在内部函数修改外部函数的局部变量,应该使用什么关键字?

答:nonlocal

2.python的函数可以嵌套,但要注意访问的作用域问题哦,请问以下代码存在什么问题呢?

defoutside():print("I am outside")definside():print("I am inside")

inside()

答:inside() 不是外部函数,不能直接调用。

3.请问代码A没有报错,但代码B却报错了?应该如何修改?

代码A

defoutside():

var= 5

definside():

var= 3

print(var)

inside()

outside()

代码B

defoutside():

var= 5

definside():print(var)

var= 3inside()

outside()

答:inside函数打印var的时候没有定义所以报错 。 报错内容(UnboundLocalError: local variable "var" referenced before assignment 翻译: UnboundLocalError: 赋值之前引用的本地变量“var”)。

4.请问如何访问funin()呢?

deffunOut():deffunIn():print("宾果!你成功访问到我啦!")return funIn()

答:funOut()

5.请问如何访问funIn()呢?

deffunOut():deffunIn():print("宾果,你成功访问到我啦!")return funIn

答:funOut()()

6. 以下是“闭包”的一个例子,请你目测下会打印什么内容?

deffunX():

x= 5

deffunY():

nonlocal x

x+= 1

returnxreturnfunY

a=funX()print(a())print(a())print(a())

答:

6

7

8

有些鱼油可能会比较疑惑,这……怎么跟全局变量一样了?局部变量x不是应该在每次调用的时候都重新初始化了吗?!其实大家仔细看看就明白了,当a = funX()的时候,只要a变量没有被重新赋值,funX()就没有被释放,也就是说局部变量x就没有被重新初始化。所以当全局变量不适用的时候,可以考虑使用闭包更稳定和安全

原文地址:https://www.cnblogs.com/pythonliu128/p/10668098.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值