- mutable(可变)
1、list – 列表
2、dict – 字典
3、set – 集合(不包含重复元素) - immutable(不可变)
1、int – 整型
2、float – 浮点型
3、str – 浮点型
4、tuple – 元组
- 可变数据类型:
函数传递的形式是地址传递,外部定义的变量作为实参被调用时,会跟随函数里面的 *** 作进行改变。
例如:
def bubble_sort(arr): n = len(arr) for i in range(n-1): for j in range(n-i-1): if arr[j]>arr[j+1]: arr[j],arr[j+1] = arr[j+1],arr[j] if __name__ == "__main__": arr = [5,6,20,14,23,98] bubble_sort(arr) print(arr) # 这里的输出,会是已经排好序的列表
如果我们不想要 外部定义的变量作为实参被调用时,会跟随函数里面的 *** 作进行改变,只需要在函数开头,对形参进行一次copy(),即可。
def bubble_sort(arr): # 只需要加这一行代码,即可 arr = arr.copy() n = len(arr) for i in range(n-1): for j in range(n-i-1): if arr[j]>arr[j+1]: arr[j],arr[j+1] = arr[j+1],arr[j] if __name__ == "__main__": arr = [5,6,20,14,23,98] bubble_sort(arr) print(arr) # 这里的输出,依然是我们定义的列表,不会改变
- 不可变数据类型
函数传递的形式是值传递,外部定义的变量作为实参被调用时,不会跟随函数里面的 *** 作进行改变。
比如:
def func(a): a = 5 print("func内:",a) a = 2 func(a) print("func外:",a) # 这里的a 还是等于 2
如果我们想要改变,只需要在函数里面,加一个return,即可
def func(a): a = 5 print("func内:",a) return a a = 2 a = func(a) print("func外:",a) # 这里的a 就变成了 5
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)