python函数中传递的参数如果是列表,字典

def func(list1=[]):
    list1.append(2)
    print(list1)
    print(id(list1))
    print("--------")

func([1])
func([1])
func()
func()
func()


输出:

[1, 2]
1850503275720
--------
[1, 2]
1850503275720
--------
[2]
1850503275912
--------
[2, 2]
1850503275912
--------
[2, 2, 2]
1850503275912
--------

可以看出,当列表,字典作为函数参数时,地址不会发生改变,如果调用时传递了新的参数,则使用新的参数,如果没有传递则使用默认的列表作为参数。

list并不在函数调用结束后就释放资源。当它作为函数参数时,相当于全局变量,在函数预处理时就已经分配了内存空间。

你可能感兴趣的:(Python)