Python的数据类型

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) # 这里的输出,会是已经排好序的列表

1

2

3

4

5

6

7

8

9

10

11

如果我们不想要 外部定义的变量作为实参被调用时,会跟随函数里面的操作进行改变,只需要在函数开头,对形参进行一次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) # 这里的输出,依然是我们定义的列表,不会改变

1

2

3

4

5

6

7

8

9

10

11

12

13

不可变数据类型:

函数传递的形式是值传递,外部定义的变量作为实参被调用时,不会跟随函数里面的操作进行改变。

比如:

def func(a):

a = 5

print("func内:",a)

a = 2

func(a)

print("func外:",a) # 这里的a 还是等于 2

1

2

3

4

5

6

7

如果我们想要改变,只需要在函数里面,加一个return,即可

def func(a):

a = 5

print("func内:",a)

return a

a = 2

a = func(a)

print("func外:",a) # 这里的a 就变成了 5

转自:https://www.weidianyuedu.com