1.关于递归函数基例的说明,以下选项中错误的是():
A 递归函数的基例决定递归的深度
B 每个递归函数都只能有一个基例
C 递归函数必须有基例
D 递归函数的基例不再进行递归
正确答案:B
所谓基例就是不需要递归就能求解的,一般来说是问题的最小规模下的解。
例如:斐波那契数列递归,f(n) = f(n-1) + f(n-2),基例是1和2,f(1)和f(2)结果都是1
再比如:汉诺塔递归,基例就是1个盘子的情况,只需移动一次,无需递归
递归必须有基例,否则就是无法退出的递归,不能求解。
2.执行以下代码,print打印的结果是多少():
def f():
a = []
for i in range(5):
a.append(lambda x: i*x)
return a
t = f()
print(t[0](2), t[1](2), t[2](2))
A 0 2 4
B 2 2 2
C 2 4 8
D 8 8 8
正确答案:D
解析:闭包:在外函数中定义一个内函数,内函数使用了外函数的临时变量,外函数的返回值是内函数的引用,此时就构成了一个闭包。
一般情况下,如果一个函数结束,那么这个函数所占用的空间都会被释放,还给内存,局部变量也会随之消失,但是闭包是一个特殊的存在,当外函数在结束自己的时候,发现自己还有临时变量在内函数中还需要使用,这时候,他会将自己的临时变量绑定给内函数,然后自己再结束
之前我受制于它不是闭包,但是我忘记了lambda是个函数,这里已经构成了闭包的条件了。
3.读程序,写出执行以下代码的打印结果:
def testFun():
temp = [lambda x: i*x for i in range(4)]
return temp
for everyLambda in testFun():
print(everyLambda(2))
正确答案:6 \n 6 \n 6 \n 6
跟上题一样
4.请说明Python中is和==的区别。
== 判断的条件:
1:其值是不是一样
2:其类型是否是一样
is 判断的条件:
1:其值是不是一样(value)
2:其类型是否是一样 (type)
3:其内存地址是否是一样(id)
5.怎么导入包A中模块B里面的全局变量C:。
正确答案:from A.B import C
6.以下关于类中__slots__的说法正确的是():
A __slots__可以约束当前类中有哪些对象属性和字段
B __slots__只能约束当前类中有哪些对象属性
C 继承的时候__slots__的会被继承,继续对子类进行约束
D 给__slots__赋值后,当前类的对象的__dict__不可用
正确答案:B D
7.关于函数作用的描述,以下选项中错误的是():
A 复用代码
B 降低编程复杂度
C 提高代码执行速度
D 增强代码的可读性
正确答案:C
8.关于类和对象以下说法正确的是():
A Python3中所有的类都有父类
B __dict__属性只有对象可以用,类不能使用
C Python中的类支持多继承,并且可以直接继承所有父类的属性和方法
D 用类去调用对象方法不会报错
正确答案:A D
9.以下关于类的内置属性的作用描述有误的是():
A __name__是用来获取对象的名字
B __class__是用来获取对象的类
C __module__是获取声明的类模块的模块名
D __bases__获取类的父类,返回的是一个类
正确答案:A D
10.有一个数字列表: nums = [23, 56, 80, 31, 79], 执行完nums.sort(key=lambda x: x%10)以后,nums的值是
正确答案: [80, 31, 23, 56, 79]