python 函数参数
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域 https://my.oschina.net/leejun2005/blog/145911
- python 函数中,参数是传值,还是传引用? http://python.jobbole.com/87801/
-
# 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))