当前位置: 首页 > news >正文

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


2fbb958a7f99435eb3ef586107f6103e.jpeg

 

 

相关文章:

  • 【数据结构与算法】用队列实现栈用栈实现队列设计循环队列
  • 【通信】基于matlab粒子群算法5G物联网云网络优化【含Matlab源码 2160期】
  • Docker容器dockerfile简介
  • Lidar-MOS 安装与使用
  • 数字IC设计 -02- 使用VCS逻辑仿真工具
  • 云原生DevOps篇:Jenkins集成Kubernetes实现动态Agent构建机制
  • 国庆征文获奖名单公布
  • 【PyTorch深度学习项目实战100例】—— 基于ResNet50实现多目标美味蛋糕图像分类 | 第51例
  • 通过ssh远程登录linux的原理过程和配置免密登录
  • css关于文本溢出
  • java基于springboot+vue的企业员工工资考勤系统 nodejs前后端分离
  • 关于同色异谱的问题
  • 将华为地图套件集成到HarmonyOs可穿戴设备应用中
  • JDBC3:事务 + DAO +数据库连接池 + 工具类增删改查
  • 【模型训练】YOLOv7训练visdrone数据集
  • #Java异常处理
  • [译]前端离线指南(上)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 2019年如何成为全栈工程师?
  • 78. Subsets
  • JAVA_NIO系列——Channel和Buffer详解
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JDK 6和JDK 7中的substring()方法
  • jquery ajax学习笔记
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • markdown编辑器简评
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • SpingCloudBus整合RabbitMQ
  • springMvc学习笔记(2)
  • STAR法则
  • 编写符合Python风格的对象
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端面试之闭包
  • 原生js练习题---第五课
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 责任链模式的两种实现
  • 智能网联汽车信息安全
  • ​2020 年大前端技术趋势解读
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (windows2012共享文件夹和防火墙设置
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (强烈推荐)移动端音视频从零到上手(上)
  • ./和../以及/和~之间的区别
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .Net面试题4
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [Bugku]密码???[writeup]
  • [iOS]Win8下iTunes无法连接iPhone版本的解决方法
  • [javaSE] GUI(Action事件)
  • [js] 正则表达式
  • [ListView.View=List]的垂直滚动条