# coding=gbk
# 赋值的本质就是绑定
# 默认参数的绑定只分配一次空间
# 其他的每次绑定都会造出一个新的对象,分配新的空间
# *************************************************************
# [1] [1, 2]
#
# [1] [2]
#
# 2 2
#
# 2121627239816
# 2121627239112
# *****************************************************************
def add(elem, list=[]):
"""
默认参数的绑定只分配了一次空间,所以每次add不指明list时,都添加到了同一个列表里面
"""
list.append(elem)
print(list, end=" ")
add(1)
add(2)
print("\n")
def add(elem, list=None):
"""
其他的每次绑定都会造出一个新的对象,分配新的空间
所以每次add不指明list时,都添加到了一个新的空list里面
:param elem:
:param list:
:return:
"""
if list == None:
list=[]
list.append(elem)
print(list, end=" ")
add(1)
add(2)
print("\n")
def add(elem, list=1):
"""
python 里面的常量有一个常量表,不分配空间
:param elem:
:param list:
:return:
"""
list+=1
print(list, end=" ")
add(1)
add(2)
print("\n")
# 其他的每次绑定都会造出一个新的对象,分配新的空间
list = [1,2]
print(id(list))
list = [1,2]
print(id(list))