牛客网专项练习30天Pytnon篇第26天

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 牛客网专项练习30天Pytnon篇第26天

1.执行以下程序,输出结果为:(A)

def fun(a=(),b=[]):
  a += (1,)
  b.append(1)
  return a,b
fun()
print(fun())

A.((1,), [1, 1])


B.((1,1), [1, 1])


C.((1,), [1])


D.((1,1), [1])


解析:


      Python的默认参数只在函数定义时被赋值一次,而不会每次调用函数时又创建新的引用。这意味着,函数定义完成后,默认参数已经存在固定的内存地址了,如果使用一个可变的默认参数并对其进行改变,那么以后对该函数的调用都会改变这个可变对象,而默认参数如果是不可变对象,不存在该问题,因此正确答案为A选项。


2.对于下列Python代码,描述正确的有:(BD)

foo = [1,2]
foo1 = foo
foo.append(3)

A.foo 值为[1,2]


B.foo 值为[1,2,3]


C.foo1 值为[1,2]


D.foo1 值为[1,2,3]


解析:


      等号后边的值赋给前边,相当于把后边的数据地址赋给了前边,两个值对应了一个地址,其中一个改变,另一个也改变。


3.一个段代码定义如下,下列调用结果正确的是:(A)

def bar(multiple):
    def foo(n):
        return multiple ** n
    return foo

A.bar(2)(3) == 8


B.bar(2)(3) == 6


C.bar(3)(2) == 8


D.bar(3)(2) == 6


解析:


      return一个函数,考察闭包。当程序调用bar(a)时,返回一个foo函数的引用,此时变成foo(b),去执行foo函数里的函数体。执行bar函数,bar(2)  返回内层函数foo  传入私有变量 multiple=2,执行foo函数,bar(2)(3) = foo(3) =2 * 2 *2 = 8。


4.执行下列程序,输出结果为:(A)

def fn():
  t = []
  i = 0
  while i < 2:
  t.append(lambda x: print(i*x,end=","))
  i += 1
  return t
for f in fn():
  print(f(2))

A.4,4,


B.2,2,


C.0,1,


D.0,2,


解析:


      函数fn存在闭包现象,自由变量是i,由于python闭包采用延迟绑定,也就是当调用匿名函数时,循环早已结束,此时i的值为2,所以输出结果都为2*2=4,正确答案为A;这段函数先是通过 in 读取到函数fn(),开始走两遍while循环,i的值变为2,然后开始执行f(2),2是作为x的参数的赋值,这个时候直接开始执行 t.append(lambda x: print(i*x,end=",")),循环两遍,循环的次数还是取决于while的条件,你把i的值调成3的话就是走三次,但是由于i的值始终是2,所以x*i,x=2,i=2,循环两遍,两遍i的值都是2,结果:4,4,。


5.嵌套函数在其外部区域引用一个值时,该嵌套函数就是一个闭包,以下代码输出值为:(D)

def adder(x):
  def wrapper(y):
  return x + y
  return wrapper
adder5 = adder(5)
print(adder5(adder5(6)))

A.10


B.12


C.14


D.16


解析:


      这道题考查的是闭包,外部函数确定x的值为5,内部函数的值为6,所以第一次计算结果为11,第二次计算,还是在x为5的前提下,需要在11的基础上再加5,11+5=16,故选D。


相关文章
|
Python
牛客网专项练习30天Pytnon篇第07天
牛客网专项练习30天Pytnon篇第07天
85 0
|
索引 Python
牛客网专项练习30天Pytnon篇第14天
牛客网专项练习30天Pytnon篇第14天
67 0
牛客网专项练习30天Pytnon篇第24天
牛客网专项练习30天Pytnon篇第24天
73 0
|
索引 Python
牛客网专项练习30天Pytnon篇第15天
牛客网专项练习30天Pytnon篇第15天
59 0
|
机器学习/深度学习 索引 Python
牛客网专项练习30天Pytnon篇第06天
牛客网专项练习30天Pytnon篇第06天
63 0
牛客网专项练习30天Pytnon篇第27天
牛客网专项练习30天Pytnon篇第27天
72 0
|
网络协议 Python
牛客网专项练习30天Pytnon篇第09天
牛客网专项练习30天Pytnon篇第09天
86 0
|
Serverless Python
牛客网专项练习30天Pytnon篇第20天
牛客网专项练习30天Pytnon篇第20天
62 0
|
C语言 索引 Python
牛客网专项练习30天Pytnon篇第29天
牛客网专项练习30天Pytnon篇第29天
174 0
|
Python
牛客网专项练习30天Pytnon篇第02天
牛客网专项练习30天Pytnon篇第02天
88 0