1.Python3执行以下程序,输出结果为:(C)
def outer(): def inner(): print('inner',end=" ") print('outer',end = " ") return inner outer()
A.inner outer
B.inner
C.outer
D.outer inner
解析:
调用函数outer,会输出outer并且返回值是inner函数,inner并没有调用,因此不会执行inner函数的语句块。
2..Python3如下代码,执行结果为:(A)
def f(x): if x == 0: return 0 elif x == 1: return 1 else: return (x*f(x-1)) print(f(5))
A.120
B.720
C.24
D.64
解析:
Python的递归题,解题思路一样的,求5的阶乘,也就是5!=5*4*3*2*1=120
3..Python3执行下面代码,请问输出结果为(A)
name = "顺顺" def f1(): print(name) def f2(): name = "丰丰" f1() f1() f2()
A.顺顺 顺顺
B.丰丰 丰丰
C.顺顺 丰丰
D.丰丰 顺顺
解析:
首先f1()相当于调用两次f1()函数,由于f1()函数体内没有局部变量name,所以引用全局变量name,故打印两次“顺顺”;f2()函数体内有局部变量name所以f2()函数体内优先使用局部变量name,因f2()函数内没有打印输出,所以不会打印f2()结果。
4..Python3执行下面代码,请问输出结果为:(D)
counter = 1 def number(): global counter for i in (1, 2, 3): counter += 1 number() print(counter)
A.1
B.2
C.3
D.4
解析:
在变量前加global代表修改的是全局变量, 原counter=1,三次循环+1故=4, 函数执行完,全局变量被修改=4。
5..Python3执行以下代码,结果输出为:(A)
num = 1 def fn(): num += 1 return lambda:print(num) x = fn() x()
A.报错
B.1
C.None
D.2
解析:
虽然在函数外部声明num 为全局变量,但若函数体内对num变量重新赋值,其结果会使得函数内部屏蔽了外面的全局变量num,此时语句num += 1就会抛出异常,即num变量没有先赋值就直接引用。