全部学科
Python全栈
python
NodeJS全栈
nodejs

函数进阶专项测试

20 题 40 分钟 难度:★★

考察知识点

  • 高阶函数:函数作为参数、函数作为返回值、map/filter/reduce
  • 闭包深入:闭包原理、变量捕获、闭包陷阱
  • lambda表达式:匿名函数语法、使用场景、限制
  • 函数装饰器基础:装饰器原理、简单装饰器实现
💡 参考答案在文末
判断题
1

Python中函数是一等公民,可以像普通对象一样赋值给变量、作为参数传递、作为返回值返回,甚至存储在数据结构中。

A

B

2

闭包是指一个函数引用了外部函数的变量,并且该函数可以在外部函数执行后被调用,仍然能够访问这些外部变量。

A

B

3

functools.partial可以固定函数的部分参数,创建一个新的函数,新函数调用时只需传递剩余参数。

A

B

4

lambda表达式用于创建匿名函数,语法简洁,只能包含单个表达式,不能包含语句块。

A

B

5

高阶函数是指接收函数作为参数或返回函数作为结果的函数,map、filter、reduce都是Python中的高阶函数。

A

B

单选题
6

执行list(map(lambda x: x * 2, [1, 2, 3]))的结果是:

A

[2, 4, 6]

B

[1, 2, 3]

C
D

[(1, 2), (2, 4), (3, 6)]

7

以下代码执行后,结果是什么?

Python
from functools import partial

def multiply(x, y):
    return x * y

double = partial(multiply, y=2)
print(double(5))
A

10

B

5

C

2

D

报错

8

执行reduce(lambda x, y: x + y, [1, 2, 3, 4])的结果是(需从functools导入reduce):

A

[1, 2, 3, 4]

B

10

C

[3, 5, 7]

D

(1, 2, 3, 4)

9

以下代码执行后,输出是什么?

Python
def counter():
    count = 0
    def increment():
        count += 1
        return count
    return increment

c = counter()
print(c())
A

1

B

0

C

报错:UnboundLocalError

D

None

10

执行list(filter(lambda x: x > 5, [1, 3, 6, 8, 2]))的结果是:

A

[6, 8]

B

[True, True, False, False, True]

C

[1, 3, 6, 8, 2]

D

[True, False, True, True, False]

11

以下哪种方式可以将函数作为参数传递给另一个函数?

A

apply_func(greet()) 传递函数返回值

B

apply_func(greet) 传递函数对象本身

C

apply_func('greet') 传递函数名字符串

D

以上都可以传递函数

12

以下哪个lambda表达式语法正确,能计算两个数的乘积?

A

lambda x, y: x * y

B

lambda (x, y): x * y

C

lambda x, y: return x * y

D

def lambda(x, y): x * y

13

以下代码执行后,输出是什么?

Python
def greet():
    return 'hello'

greet_alias = greet
print(greet_alias())
A

'hello'

B

None

C

报错:greet_alias不是函数

D

'greet'

14

执行(lambda x, y: x + y)(5, 3)的结果是:

A

8

B

(5, 3)

C

lambda函数对象

D

报错

多选题
15

以下关于map和filter函数的说法,哪些是正确的?

A

map返回一个列表

B

map返回一个迭代器(惰性计算)

C

filter返回一个迭代器(惰性计算)

D

需要用list()转换才能看到具体结果

E

reduce返回一个单一值

填空题
16

Python函数是____________,可以像普通对象一样:赋值给____________、作为____________传递给其他函数、作为返回值从函数返回、存储在数据结构中(如列表、字典)。

17

functools.partial(函数, ____________)创建偏函数。偏函数____________了部分参数,调用时只需传递____________参数。partial常用于简化默认参数设置、适配不同参数签名的函数调用。

18

lambda表达式语法:____________ ____________ ____________ 表达式。lambda只能包含单个表达式,不能包含语句块和return关键字。lambda常作为高阶函数的参数使用。

19

map(func, iterable)对每个元素应用函数,返回____________filter(func, iterable)保留函数返回____________的元素,返回____________reduce(func, iterable)从functools模块导入,将序列累积计算得到一个值。三者都是高阶函数。

20

闭包是指内部函数____________了外部函数的变量,外部函数执行后,内部函数仍能____________这些变量。读取外部变量可以直接访问,修改外部变量需要使用____________关键字声明。闭包的变量存储在__closure__属性中。

参考答案
1.正确 2.正确 3.正确 4.正确 5.正确 6.A 7.A 8.B 9.C 10.A 11.B 12.A 13.A 14.A 15.B;C;D;E 16.一等公民;变量;参数 17.固定参数;固定;剩余 18.lambda;参数;冒号 19.迭代器;True;迭代器 20.引用;访问;nonlocal
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 函数基础专项测试
下一套试卷 → 变量与数据类型专项测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码