《Python程序设计基础项目化教程习题项目五函数高级应用.docx》由会员分享,可在线阅读,更多相关《Python程序设计基础项目化教程习题项目五函数高级应用.docx(5页珍藏版)》请在优知文库上搜索。
1、函数高级应用测试习题测试习题一.填空题1 .按照作用域的不同,Python中的变量可以分为局部变量和O2 .在一个函数中使用关键字,可以声明在该函数中使用的是全局变量、而非局部变量。3 .通过关键字,可以使内层的函数直接使用外层函数中定义的变量。4 .函数是指在一个函数内部通过调用自己来完成一个问题的求解。5 .函数也称为匿名函数,是一种不使用def定义函数的形式,其作用是能快速定义一个简短的函数。6 .lambda函数的函数体只是一个,所以Iambda函数通常只能实现比较简单的功能。7 .如果内层函数使用了外层函数中定义的局部变量,并且外层函数的返回值是内层函数的引用,就构成了O二、选择题1
2、 .下列说法中错误的是()A.在一个函数中定义的变量就是局部变量B.局部变量的作用域是从定义位置到函数结束位置C.在所有函数外定义的变量就是全局变量D.全局变量的作用域是从定义位置到程序结束位置2 .下列关于装饰器的说法错误的是()A.利用装饰器,可以在不修改已有函数的情况下向已有函数中注入代码,使其具备新的功能B. 一个装饰器可以为多个函数注入代码,一个函数也可以注入多个装饰器的代码C. 一个装饰器可以为多个函数注入代码,而一个函数只能注入一个装饰器的代码D.装饰器实际上就是一种闭包三、简答题1 .写出下面程序的输出结果。defouter():x=100globalyy=200definne
3、r():nonlocalXx=1000y=2000PrintCinner函数中的x,y值为:lly)inner()PrintCOUter函数中的x,y值为:,x,y)x=10y=20outer()Prim(执行OUter,inner函数之后xzy值为:nlly)2 .写出下面闭包程序的输出结果。deff(x):y=100definner(z):returnx*y+zreturninneral=f(10)a20=f(20)print(al(29)print(a20(29)3 .已知高阶函数的程序如下:defFunAdd(f,x):returnf(x)defarea(r):return3.14*r
4、*rdefperimeter(r):return2*3.14*rprint(FunAdd(area,5)Print(FUnAdd(Perimeter;5)请将其中的area函数和perimeter函数改写为Iambda函数。请将改写后的程序填写完整。defFunAdd(f,x):returnf(x)print(FunAdd(,5)print(FunAdd(,5)4 .斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家列昂纳多斐波那契(LeonardodaFibonacci)以兔子繁殖为例子而引入,故又称为兔子数列。斐波那契数列前两项的值都为1,后面每一项的值等于其前两项的和,即:F(1)=F(2)=1,F(n)=F(n-l)+F(n-2)(n2请编写递归函数fib(n),实现求斐波那契数列第n项的值。