3.7 课后习题
(1)在Python语言中,使用函数分为两个步骤:定义函数和调用函数

(2)在Python语言中,函数定义需要使用def关键字

(3)形参是在定义函数时函数后面的一对小括号中给出的参数列表

(4)实参是在调用函数时函数后面的一对小括号中给出的参数列表

(5)能够将一个函数的运算结果返回到调用函数的位置,以便可以继续用该运算结果参与其他运算,此时则应使用return语句

(6)使用import将整个模块导入,也可以使用from import将模块中的标识符直接导入当前环境

(7)可以适用 “ from 模块名 import * ”的方式导入一个模块中的所有标识符

(8)定义一个包,就是创建一个文件夹并在该文件夹下创建一个_init_.py文件,文件夹的名字就是包名

(9)猴子补丁是指在运行时动态替换已有的代码,而不需要修改原始代码

(10)下列说法中错误的是(B)

A.当调用函数时,如果没有为某些形参传递对应的实参,则这些形参会自动使用默认参数值

B.在使用关键字参数调用函数时,实参的传递顺序必须与形参列表中形参的顺序一致

C.当普通实参传递给形参后,如果在函数体中对形参值做修改,则该修改并不会影响实参,即实参值不会改变

D.如果实参是列表等对象,那么可在函数体中通过形参修改实例列表中对应元素的值

(11)下列关于拆分参数列表的说法正确的是(A)

A.列表、元组拆分出来的结果作为位置参数,字典拆分出来的结果作为关键字参数

B.列表、元组和字典拆分出来的结果都作为关键字参数

C.列表、元组和字典拆分出来的结果都作为位置参数

D.列表、元组拆分出来的结果作为关键字参数,而字典拆分出来的结果作为位置参数

(12)写出下面程序段的输出结果

def ModifyVal(x,y):
    z = x
    x = y
    y = z
def ModifyListElement(ls,idx,val):
    ls[idx] = val
a,b = 3,5
print(a,b)
ModifyVal(a,b)
print(a,b)
c = [7,8,9]
print(c)
ModifyListElement(c,1,6)
print(c)
 
 
#输出结果
3 5
3 5
[7, 8, 9]
[7, 6, 9]
(13)写出下面程序段的输出结果

def Cir(radius,color = 'red'):
    print('半径:%d,颜色:%s'%(radius,color))
Cir(10)
Cir(20,color='green')
Cir(color='blue',radius=30)
 
 
#输出结果
半径:10,颜色:red
半径:20,颜色:green
半径:30,颜色:blue
(14)函数sum的功能是求参数的和并返回,参数个数不限。请将程序填写完整

def Sum(*args):
    s=0
    for i in args:
        s += i
    return s
print(Sum(1,2,3,4,5))

(15)已知模块文件arithmetic.py的内容如下:

def plus(x,y):
    return x+y
def multi(x,y):
    return x*y

编写程序,将模块导入,调用其中的函数,请将程序填写完整
使用import导入:
import arithmetic
print(arithmetic.plus(3,5))
print(arithmetic.multi(5,6))

使用from import依次导入函数:
from arithmetic import plus,multi
print(plus(3,5))
print(multi(5,6))

使用from import导入所有标识符:
from arithmetic import *
print(plus(3,5))
print(multi(5,6))
(16)按照作用域的不同,Python中的变量可以分为局部变量和全局变量

(17)在一个函数中使用global关键字,可以声明在该函数中使用的是全局变量,而非局部变量

(18)通过nonlocal关键字,可以使内层的函数直接使用外层函数中定义的变量

(19)递归函数是指在一个函数内部通过调用自己来求解一个问题

(20)lambda函数也称为匿名函数,是一种不适用def定义函数的形式,其作用是能快速定义一个简短的函数

(21)lambda函数的函数体只是一个表达式,所以lambda函数通常只能实现比较简单的功能

(22)如果内层函数使用了外层函数中定义的局部变量,并且外层函数的返回值是内层函数的引用,就构成了闭包

(23)下列说法中错误的是(D)

A.在一个函数中定义的变量就是局部变量

B.局部变量的作用域是从定义位置到函数结束位置

C.在所有函数外定义的变量就是全局变量

D.全局变量的作用域是从定义位置到程序结束位置

(24)下列关于修饰器的说法错误的是(C)

A.利用装饰器,可以在不修改已有代码的情况下向已有函数中注入代码,使其具备新的功能

B.一个装饰器可以为多个函数注入代码,一个函数也可以注入多个装饰器的代码

C.一个装饰器可以为多个函数注入代码,而一个函数只能注入一个装饰器的代码

D.装饰器实际上就是 一种闭包

(25)写出下面程序的输出结果

def outer():
    x=100
    global y
    y=200
    def inner():
        nonlocal x
        x=1000
        y=2000
        print('inner函数中的x,y值为',x,y)
    inner()
    print('outer函数中的x,y值为',x,y)
x=10
y=20
outer()
print("执行outer,inner函数之后x,y值为",x,y)
 
 
#输出结果
inner函数中的x,y值为 1000 2000
outer函数中的x,y值为 1000 200
执行outer,inner函数之后x,y值为 10 200
(26)写出下面闭包程序的输出结果

def f(x):
    y = 100
    def inner(z):
        return x * y + z
    return inner
a10 = f(10)
a20 = f(20)
print(a10(29))
print(a20(29))
 
 
#输出结果
1029
2029
(27)已知高阶函数的程序如下

def FunAdd(f,x):
    return f(x)
def area(r):
    return 3.14*r*r
def perimeter(r):
    return 2*3.14*r
print(FunAdd(area,5))
print(FunAdd(perimeter,5))

请将其中的area函数和perimeter函数改写为lambda函数。请将改写后的程序填写完整

def FunAdd(f,x):
    return f(x)
print(FunAdd(lambda r:3.14*r*r,5))
print(FunAdd(lambda r:2*3.14*r,5))
(28)请编写递归函数fib(n),实现斐波那契数列第n项的值

def fib(n):
    if n <= 1:
        return n
    else:
        return (fib(n - 1) + fib(n - 2))
 
num = int(input("输入想要输出的第几项:"))
if num < 0:
    print("输入正数")
elif num == 0:
    print("0")
else:
    print("斐波那契数列:")
    for i in range(num):
        print(fib(i+1))

《Python语言程序设计》王恺 王志 机械工业出版社 第三章 函数 课后习题答案相关推荐

  1. 《Python语言程序设计》王恺 王志 机械工业出版社 第四章 面向对象 课后习题答案

    4.5 课后习题 (1)类和对象的关系即数据类型与变量的关系,类规定了可以用于存储什么数据,而对象用于实际存储数据,每个对象可存储不同的数据 (2)类中包含属性和方法.属性对应一个类可用来保存哪些数据 ...

  2. 《Python语言程序设计》王恺 王志 李涛 机械工业出版社 第3章 函数 课后习题答案【强烈推荐】

    点个

  3. 《Python语言程序设计》王恺 王志 李涛 机械工业出版社 第4章 面向对象 课后习题答案【强烈推荐】

    点个

  4. 《Python语言程序设计》王恺 王志 李涛 机械工业出版社 第6章 字符串 课后习题答案【强烈推荐】

    点个

  5. C语言程序设计第五版谭浩强著 第五章部分课后习题答案

    #include<stdio.h> main() {int x,y,m,n,u,p;scanf("%d%d",&x,&y);m=x;n=y;while( ...

  6. C语言程序设计第五版谭浩强著 第七章部分课后习题答案

    #include<stdio.h> int gcd(int x,int y) {int z;for(;;){z=x%y;x=y;y=z;if(y==0)break;}return x; } ...

  7. 《Python语言程序设计》王恺 机械工业出版社 第三章课后习题答案

    ​​第三章   函数 3.7 课后习题 (1)在Python语言中,使用函数分为两个步骤:定义函数和调用函数 (2)在Python语言中,函数定义需要使用def关键字 (3)形参是在定义函数时函数后面 ...

  8. 《Python语言程序设计》王恺 王志 机械工业出版社 第五章 序列、集合和字典 课后习题答案

    5.8 课后习题 (1)Python 中,通过列表中的 index 方法可以根据指定值查找第一个匹配的列表元素 的位置. (2)Python 中,通过列表中的 insert 方法可以将一个元素插入到列 ...

  9. 《Python语言程序设计》王恺 王志 机械工业出版社 第七章 I/O编程与异常 课后习题答案

    7.7 课后习题 (1)利用 os 模块查看当前系统的名字,应当使用 os.name . (2)利用 os 模块获取当前系统平台路径的分隔符,应当使用 os.sep . (3) 利用 os 模块获取当 ...

最新文章

  1. 实战域树部署,Active Directory系列之十九
  2. Ecplise中怎样进行全局搜索
  3. java itext 导出pdf文件_【Java,PDF】使用Itext实现PDF文件生成
  4. 浅谈 UNIX、Linux、ios、android 他们之间的关系
  5. python局部静态变量_全局变量、局部变量和静态变量
  6. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyR
  7. Android系统信息获取 之十:移动网络相关信息获取
  8. [Project Euler]Problem 1:Multiples of 3 and 5
  9. CreatePipe、CreateProcess函数
  10. Ubuntu20.04更换阿里源教程
  11. 淘宝/天猫/京东/拼多多618抢购软件,抢购助手支持淘金币任务,附上源码
  12. 最全74HC04六反相器中文资料|引脚图及功能表|应用电路图
  13. php安全新闻早八点-Microdoor-第五季
  14. python预测股票价格_使用机器学习预测股票价格的愚蠢简便方法
  15. 2021 年 1 月程序员工资新出炉,你猜涨了多少?
  16. 【Thymeleaf】Thymeleaf中的判断语句
  17. 我的世界服务器光影文件夹,我的世界光影包放在哪个文件夹(光影包文档保存位置)...
  18. Win10显示dds及tga缩略图
  19. java实现redis工具类及其调用
  20. 计算机网络的硬件主要有,什么是计算机网络及主要功能有哪些?

热门文章

  1. 大数 组合数C(n,m)算法
  2. 【NLP基础中文处理】jieba分词初级的应用,以及统计《茅山后裔》的主要人物
  3. linux文本界面发邮件,柴少鹏的官方网站-linux发送邮件内容变成了tcmime.xxxx.xxxx.xxxx.bin的附件形式...
  4. js判断手指上滑和下滑
  5. Android 文件存储系统
  6. Excel的金额小写转大写的函数
  7. rmvb 文件格式解析
  8. python OSMNX路网处理 FMM GPS轨迹点绑路
  9. 菜鸟站长之家SEO工具大礼包多达上百个小工具
  10. nginx阻挡flv视频文件上传解决方案