Python 列表作为默认参数

原创 2014年 4月 8日
标签: PYTHON
本文发布至今已有10年零227天,可能不再适用,请谨慎对待。

先打个广告:欢迎关注我的公众号,参与 文史大挑战 趣味题目。使用方法见 这篇文章

公众号:晚花行乐

正文开始:

如果将一个列表作为默认参数传递给函数,在函数内部对列表操作后会怎样呢?我们看下面的代码:

def func(L=[]):
    L.append(1)
    return L
print func()
print func()
print func()

函数func()接受一个参数,这个参数的默认值是个空列表,在函数体里这个空列表被追加一个元素1,函数最后返回这个列表。当3个完全相同的函数被执行3次后,返回值会是怎么样?结果是

[1]
[1, 1]
[1, 1, 1]

这是因为函数的默认参数只运算一次,如果这个默认参数是可变的,那么这个参数的变化就会在函数每次被调用时积累下来。 作为对比,如果代码改为:

def func():
    L=[]
    L.append(1)
    return L
print func()
print func()
print func()

结果就变成

[1]
[1]
[1]

如果您对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

标签: PYTHON
给个免费的赞吧~

精彩评论

本站 是个人网站,采用 署名协议 CC-BY-NC 授权。
欢迎转载,请保留原文链接 https://www.lfhacks.com/tech/python-list-parameter/ ,且不得用于商业用途。