首页 > 编程语言 > 详细

python-函数-列表-引用

时间:2019-05-30 16:58:11      阅读:114      评论:0      收藏:0      [点我收藏+]

今天面试遇到了一道题

def func(a,l=[]):

  l.append(a)

  return l

func(‘a‘)

func(‘abc‘,[1,2,3,4])

func(10)

[‘a‘]

[1,2,3,4,‘abc‘]

[‘a‘,10]

但是你要是继续执行func()函数内部的list容器的内容就一直在变,这只是没有赋值的情况下,要是赋值呢?

从下面的代码发现在编写代码时,注意函数和引用问题。因为有在函数中定义了一个列表容器,并且它在函数定义时创建。因为函数返回的是列表容器的引用,所以后面的执行结果对前面的造成影响。通俗点讲,就是两个变量同时引用了该容器的地址。地址内数据发生改变对两个变量都会有影响,也可以说是浅拷贝。

In [17]: def func(a,l=[]):
    ...:     l.append(a)
    ...:     return l
    ...: 
    ...: 

In [18]: l1 = func(‘a‘)

In [19]: l2 = func(‘abc‘,[1,2,3,4])

In [20]: l3 = func(10)

In [21]: print(l1,l2,l3)
[‘a‘, 10] [1, 2, 3, 4, ‘abc‘] [‘a‘, 10]

python-函数-列表-引用

原文:https://www.cnblogs.com/deepstack/p/10950558.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!