Python的可变与不可变数据类型

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值