python自定义函数课后习题

1、编写一个函数,判断传入的字符参数是否为“回文联”

def ishw(str1):
    if str1==str1[::-1]:
        print('是回文联')
    else:
        print('不是回文联')

  用[::-1]或者reversed实现字符串反转操作。sorted方法是按照字符串的as码进行排序。

2、如果希望在函数中修改全局变量的值,应该用什么方法?

  global

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

  nonlocal

4、代码B为何报错?应如何修改?

>>> def outside():
    var=5
    def inside():
        print(var)
        var=3
    inside()

    
>>> outside()

  内部函数调用外部变量时,python为了保护外部变量,会对外部变量进行屏蔽,所以此时无法访问外部变量,变量没有定义直接打印所以报错。可以用nonlocal。

>>> def outside():
    var=5
    def inside():
        nonlocal var
        print(var)
        var=3
    inside()
    print(var)

    
>>> outside()

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

>>> def funOut():
    def funIn():
        print('可以访问')
    return funIn
>>> a=funOut()
>>> a()
可以访问

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

>>> def funX():
    x=5
    def funY():
        nonlocal x
        x+=1
        return x
    return funY

>>> a=funX()
>>> print(a())
>>> print(a())
>>> print(a())
>>> print(a())
6
7
8
9

  当a=funX()的时候,只要a变量没有被重新赋值,funX()就没有被释放,也就是说局部变量x就没有被初始化。

7、请使用lambda表达式将下边函数转变为匿名函数

def fun_A(x,y=3):
    return x*y
lambda x,y=3:x*y
>>> a
<function <lambda> at 0x02060348>
>>> a(1)
3

猜你喜欢

转载自www.cnblogs.com/sunnan134/p/9391442.html