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开头。
这种有利有弊,某些情况可以利用这种性质;如果不期望这样,避开这个默认参数。
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. 不过,以后面试问到此题,相信可以从容应答。
本文分享自 程序员郭震zhenguo 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!