Python中传递列表时用copy()和不用的区别

在python中,python会通过引用的方式传递所有列表,所以必须名曲的告知Python要为新的赋值变量分配新的内存,也就是用copy()方法
代码举例:

"""
Author:Zhengsh
Time:2020/5/3
Type:案例代码
"""

def main_copy():
    old = [1, 2]
    new = old.copy()
    old.append(3)
	print("old = %s" % old)  # 旧列表添加了元素3,因此旧列表输出为[1, 2, 3]
    print("new_copy = %s" % new)  # 新列表由于是分配了新内存,那么它不会因旧列表的变化而变化,输出为[1, 2]
    
def main_not_copy():
    old = [1, 2]
    new = old
    old.append(3)
	print("old = %s" % old)  # 旧列表添加了元素3,因此旧列表输出为[1, 2, 3]
    print("new = %s" % new)  # 新列表由于是直接引用old列表的地址,那么它就会因旧列表的变化而变化,输出为[1, 2, 3]

if __name__ == '__main__':
    # 使用了copy()方法
    main_copy()
    
    print('\n' + '*' * 20 + '\n')  # 分割线
	
	# 不使用copy()方法,直接引用
	main_not_copy()
"""
output:
old = [1, 2, 3]
new_copy = [1, 2]

********************

old = [1, 2, 3]
new = [1, 2, 3]
"""
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章