码迷,mamicode.com
首页 > 其他好文 > 详细

面试题01

时间:2019-01-31 16:45:25      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:lap   .com   查询   pen   http   isp   hid   内存地址   面试   

面试题1:下面代码的输出结果是什么,请解释。

def extend_list(val, list=[]):
    list.append(val)
    return list


list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list(a)


print(list1)
print(list2)
print(list3)

输出结果:

[10, ‘a‘]
[123]
[10, ‘a‘]

解释:

(1)通过 print(id(list1))查询每个list1、list2、list3共3个对象的地址可以比对结果,其中list1和list3指向了同一内存地址,所以最后list1和list3的结果一致。

(2)代码呈现如下:

技术分享图片
def extend_list(val, list=[]):
    list.append(val)
    return list


list1 = extend_list(10)
print(id(list1))  # 查看内存地址
list2 = extend_list(123, [])
print(id(list2))  # 查看内存地址
list3 = extend_list(a)
print(id(list3))  # 查看内存地址


print(list1)
print(list2)
print(list3)
View Code

(3)结果如下:

技术分享图片

(4)更加深入原因如下:

  • 函数 extend_list有个默认参数list=[],默认为空,所以extend_list(10)时默认增加一个列表l1,并且将10增加至列表l1中,此时l1=[10]
  • extend_list(123,[]),相当于新增一个列表l2,并且将123追加至l2中,此时l2=[123].
  • extend_list(‘a‘),相当于在列表l1中追加元素‘a’,此时l1=[10,‘a‘]
  • 所以最后的打印结果是list1和list3的结果是[10,‘a‘],列表l2的结果是[123]

面试题01

标签:lap   .com   查询   pen   http   isp   hid   内存地址   面试   

原文地址:https://www.cnblogs.com/mayugang/p/10342275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!