函数进阶专项测试
考察知识点
- 高阶函数:函数作为参数、函数作为返回值、map/filter/reduce
- 闭包深入:闭包原理、变量捕获、闭包陷阱
- lambda表达式:匿名函数语法、使用场景、限制
- 函数装饰器基础:装饰器原理、简单装饰器实现
Python中函数是一等公民,可以像普通对象一样赋值给变量、作为参数传递、作为返回值返回,甚至存储在数据结构中。
以下代码执行后,输出是什么?
def greet():
return 'hello'
greet_alias = greet
print(greet_alias())
Python函数是________,可以像普通对象一样:赋值给______、作为______传递给其他函数、作为______从函数返回、存储在________中(如列表、字典)。
以下哪种方式可以将函数作为参数传递给另一个函数?
高阶函数是指接收函数作为参数或返回函数作为结果的函数,map、filter、reduce都是Python中的高阶函数。
执行list(map(lambda x: x * 2, [1, 2, 3]))的结果是:
执行list(filter(lambda x: x > 5, [1, 3, 6, 8, 2]))的结果是:
执行reduce(lambda x, y: x + y, [1, 2, 3, 4])的结果是(需从functools导入reduce):
map(func, iterable)对每个元素应用函数,返回______。filter(func, iterable)保留函数返回______的元素,返回______。reduce(func, iterable)从_________模块导入,将序列______计算得到一个值。三者都是______函数。
以下关于map和filter函数的说法,哪些是正确的?
lambda表达式用于创建匿名函数,语法简洁,只能包含单个表达式,不能包含语句块。
以下哪个lambda表达式语法正确,能计算两个数的乘积?
lambda表达式语法:______ ______ ______ ______。lambda只能包含______表达式,不能包含______块和______关键字。lambda常作为________的参数使用。
执行(lambda x, y: x + y)(5, 3)的结果是:
functools.partial可以固定函数的部分参数,创建一个新的函数,新函数调用时只需传递剩余参数。
以下代码执行后,结果是什么?
from functools import partial
def multiply(x, y):
return x * y
double = partial(multiply, y=2)
print(double(5))
functools.partial(函数, ________)创建偏函数。偏函数______了部分参数,调用时只需传递______参数。partial常用于简化________设置、适配____________的函数调用。
闭包是指一个函数引用了外部函数的变量,并且该函数可以在外部函数执行后被调用,仍然能够访问这些外部变量。
以下代码执行后,输出是什么?
def counter():
count = 0
def increment():
count += 1
return count
return increment
c = counter()
print(c())
闭包是指内部函数______了外部函数的变量,外部函数执行后,内部函数仍能______这些变量。读取外部变量可以直接访问,修改外部变量需要使用________关键字声明。闭包的变量存储在___________属性中。
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验