前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BAT面试题26:一道Python填空题

BAT面试题26:一道Python填空题

作者头像
double
发布2018-12-29 11:24:22
5520
发布2018-12-29 11:24:22
举报
文章被收录于专栏:算法channel算法channel
代码语言:javascript
复制
1def f(x,lst=[]):
2for i in range(x):
3lst.append(i*i)
4print(lst) 
5
6f(2)
7f(3)

上面这段代码的输出是什么 ?

如果你的回答是这样:

[0,1]

[0,1,4]

很不幸,你进入圈套了

正确输出为:

因为Python内存还是存了第一次残留的lst值,请注意看lst作为f的默认参数。所以它以0和1开头。

这种有利有弊,某些情况可以利用这种性质;如果不期望这样,避开这个默认参数。

代码语言:javascript
复制
1def f(x):
2    lst = []
3    for i in range(x):
4        lst.append(i*i)
5    print(lst) 

以上输出为:

[0,1]

[0,1,4]

问题虽小,但不注意,也会掉入陷阱,带来bug. 不过,以后面试问到此题,相信可以从容应答。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档