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

Posted pythonliu128

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小甲鱼零基础python课后题 P20 019函数:我的地盘听我的相关的知识,希望对你有一定的参考价值。

测试题

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函数:我的地盘听我的的主要内容,如果未能解决你的问题,请参考以下文章

这个python第二小题要怎么做呢,求解答

小甲鱼Python第十三讲课后题--014字符串

[Python]小甲鱼Python视频第009课(了不起的分支和循环3)课后题及参考解答

[Python]小甲鱼Python视频第038课(类和对象:继承 )课后题及参考解答

[Python]小甲鱼Python视频第013课(元组:戴上了枷锁的列表)课后题及参考解答

[Python]小甲鱼Python视频第006课(Pyhon之常用操作符)课后题及参考解答