python-函数的默认参数

如果函数的默认参数为列表:

def power(l = []):
    l.append(end)

power() //输出[end]
power() //输出[end, end]

调用了两次power(), 为什么第二次输出[end, end]?
因为列表里存放的是指向变量的指针,调用函数结束后,指针并没有释放,所以列表中还存放着指向end的指针,再次调用power(), 列表中再次插入新指针,所以出现两个end元素。

注意:函数的默认参数最好不要设定为列表、字典等可变类型,易引起上面错误。建议函数默认参数设定为数字、字符串、元组不可变类型。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容