3.11. 列表作为默认参数时的陷阱

3.11.1. 代码示例

#!/usr/bin/env python
#-*- coding:utf8 -*-
def test_list_arg(lst=[]):
    """
    当lst第一次调用之后,会成为abc,lst在外部再次传入时,是带有参数的,默认lst=[]不生效
    :param lst:
    :return:
    """
    lst.append("abc")
    print(lst)

test_list_arg()
test_list_arg()
test_list_arg()


print("="*100)

def test_list_arg2(lst=None):
    lst = [] if lst is None else lst
    lst.append("abc")
    print(lst)

test_list_arg2()
test_list_arg2()
test_list_arg2()

输出信息

['abc']
['abc', 'abc']
['abc', 'abc', 'abc']
====================================================================================================
['abc']
['abc']
['abc']