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

简介: 牛客网专项练习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。


相关文章
|
安全 计算机视觉
高通TrustZone接口QSEECOM Use-After-Free漏洞分析
#高通QSEECOM接口漏洞(CVE-2019-14040)分析 #阿里安全(侯客) ##背景:  上周五看到一篇国外的安全公司zimperium的研究人员写的一篇他们分析发现的高通的QSEECOM接口漏洞文章,[https://blog.zimperium.com/multiple-kernel-vulnerabilities-affecting-all-qualcomm-d
2205 0
高通TrustZone接口QSEECOM Use-After-Free漏洞分析
|
3月前
|
算法 定位技术 调度
基于蚂蚁优化算法的柔性车间调度研究(Python代码实现)
基于蚂蚁优化算法的柔性车间调度研究(Python代码实现)
198 0
|
存储 Java 应用服务中间件
服务器上的Linux中Tomcat有时会挂掉的问题及方法
服务器上的Linux中Tomcat有时会挂掉的问题及方法
1462 0
服务器上的Linux中Tomcat有时会挂掉的问题及方法
|
数据采集 JSON 编解码
Python爬虫系列6-百度文库VIP付费数据的抓取
编程难不难?那可不是闹着玩的。不从事这一行的永远不知道这行的艰辛 俗话说的好;爬虫在手天下我有,自从学习了爬虫;看到什么都想盘它一番;直到遇到JS反爬。 不知大家有没有遇到过这种情况;就是你在网上不管是查阅资料也好还是做什么,你会发现其实很多人写的反爬一类的都只给你看结果,你根本不知道这个突破过程是怎么样的,哪怕获取到了代码又有何用;下次再给你一道题,你同样还是不会。你品,你细品...... 我觉得做任何事情一定有在短期内简单可行的方法。学习不应该是苦差事,而应该是快乐的,重要的是找到适合自己的学习方法。师者传道受业解惑!
1149 0
Python爬虫系列6-百度文库VIP付费数据的抓取
|
Rust 算法 安全
【密码学】一文读懂RSA
本文来聊聊RSA, 这是一个非对称密码,和之前所提到的AES与DES不同的是,这个加密方式有两个密钥,一个是公钥,一个是私钥,公钥用来加密,私钥用来解密。相比于对称密码,非对称密码大多基于某个数学难题,比如接下来要谈论的RSA即基于大整数分解的困难性来的,因此为了说明白这个加密算法,首先要先补充&quot;一&quot;点点数学知识。
|
SQL 分布式计算 Hadoop
在文件存储HDFS版上使用 Presto
本文档主要介绍在文件存储HDFS版上搭建及使用 Presto。
809 0
|
存储 SQL 缓存
Springboot整合Redis作为Mybatis的二级缓存
文章转载声明:转载请附带原文链接
Springboot整合Redis作为Mybatis的二级缓存
|
机器学习/深度学习 城市大脑 人工智能
人狠话不多!阿里成立半导体公司「平头哥」:首款 AI 芯片明年面世
9 月 19 日上午,由杭州市政府与阿里巴巴主办、最具影响力的云计算峰会——「云栖大会」在杭州开幕。大会首日,阿里巴巴发布了城市大脑 2.0 版,宣布成立「平头哥」半导体公司开发 AI 芯片,吸引了众人关注。
1537 0
人狠话不多!阿里成立半导体公司「平头哥」:首款 AI 芯片明年面世
|
SQL 消息中间件 分布式计算
数仓大法好!跨境电商 Shopee 的实时数仓之路
本文讲述 Flink 在 Shopee 新加坡数据组(Shopee Singapore Data Team)的应用实践,主要内容包括:实时数仓建设背景、Flink 在实时数据数仓建设中结合 Druid、Hive 的应用场景、实时任务监控、Streaming SQL 平台化、Streaming Job 管理、未来规划优化方向。
数仓大法好!跨境电商 Shopee 的实时数仓之路
|
新零售 人工智能 安全
阿里巴巴上海研发中心启用 平头哥、阿里云首批入驻
12月13日,阿里巴巴上海研发中心在浦东张江人工智能岛正式启用。这也意味着,阿里巴巴将进一步深入参与上海“五个中心”建设,助力上海打造全球科创高地。首批入驻的团队包括平头哥、阿里云。
6343 0