标签:reference 注意 glob family 本地 没有 code nonlocal 代码
测试题
0.如果希望在函数中修改全局变量的值,应该使用什么关键字?
答:globe
1.在嵌套函数中,如果希望在内部函数修改外部函数的局部变量,应该使用什么关键字?
答:nonlocal
2.python的函数可以嵌套,但要注意访问的作用域问题哦,请问以下代码存在什么问题呢?
def outside(): print("I am outside") def inside(): print("I am inside") inside()
答:inside() 不是外部函数,不能直接调用。
3.请问代码A没有报错,但代码B却报错了?应该如何修改?
代码A
def outside(): var = 5 def inside(): var = 3 print(var) inside() outside()
代码B
def outside(): var = 5 def inside(): print(var) var = 3 inside() outside()
答:inside函数打印var的时候没有定义所以报错 。 报错内容(UnboundLocalError: local variable ‘var‘ referenced before assignment 翻译: UnboundLocalError: 赋值之前引用的本地变量“var”)。
4.请问如何访问funin()呢?
def funOut(): def funIn(): print("宾果!你成功访问到我啦!") return funIn()
答:funOut()
5.请问如何访问funIn()呢?
def funOut(): def funIn(): print("宾果,你成功访问到我啦!") return funIn
答:funOut()()
6. 以下是“闭包”的一个例子,请你目测下会打印什么内容?
def funX(): x = 5 def funY(): nonlocal x x += 1 return x return funY a = funX() print(a()) print(a()) print(a())
答:
6
7
8
有些鱼油可能会比较疑惑,这……怎么跟全局变量一样了?局部变量x不是应该在每次调用的时候都重新初始化了吗?!其实大家仔细看看就明白了,当a = funX()的时候,只要a变量没有被重新赋值,funX()就没有被释放,也就是说局部变量x就没有被重新初始化。所以当全局变量不适用的时候,可以考虑使用闭包更稳定和安全
小甲鱼零基础python课后题 P20 019函数:我的地盘听我的
标签:reference 注意 glob family 本地 没有 code nonlocal 代码
原文地址:https://www.cnblogs.com/pythonliu128/p/10668098.html