- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- python 函数中,参数是传值,还是传引用?
-
# 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))