风风魔王 发表于 2020-3-20 10:33:05

29讲课上例子 为什么全局变量作为实参传到函数里,函数结束参数有的变了,有的不变?

a = []
b = 1
def fun1(a, b):
    a.append(1)
    b += 1
fun1(a, b)
print(a, b)

为什么同样是全局变量,a作为参数传进去在函数里操作了值就会改变,而b作为参数传进去了值就不变呢?


qiuyouzhi 发表于 2020-3-20 10:39:58

因为存储结构(列表,字典等等)是没有全局局部这一说的

wp231957 发表于 2020-3-20 10:44:25

因为a是a   b不是b

一个账号 发表于 2020-3-20 10:44:33

因为列表是可变类型

xinhua202002 发表于 2020-3-20 10:46:20

外面的b是全局变量
里面的b是局部变量

风风魔王 发表于 2020-3-20 10:46:36

wp231957 发表于 2020-3-20 10:44
因为a是a   b不是b

b不是b我明白,为什么a不能是a呢?

xinhua202002 发表于 2020-3-20 10:46:53

a = []
b = 1
def fun1(a, b):
    a.append(1)
    b += 1
    print(b)

fun1(a, b)
print(a, b)

风风魔王 发表于 2020-3-20 10:47:09

一个账号 发表于 2020-3-20 10:44
因为列表是可变类型

可变类型什么意思?b不是可变类型吗?

风风魔王 发表于 2020-3-20 10:47:41

xinhua202002 发表于 2020-3-20 10:46
外面的b是全局变量
里面的b是局部变量

b我了解了,a为什么会变呢?

qiuyouzhi 发表于 2020-3-20 10:47:54

风风魔王 发表于 2020-3-20 10:47
可变类型什么意思?b不是可变类型吗?

所有的存放数据类型(列表,字典)都是没有全局,局部这一说的

永恒的蓝色梦想 发表于 2020-3-20 10:48:19

风风魔王 发表于 2020-3-20 10:46
b不是b我明白,为什么a不能是a呢?

a只是调用了方法,没有重新赋值,所以就会这样

一个账号 发表于 2020-3-20 10:48:23

风风魔王 发表于 2020-3-20 10:47
可变类型什么意思?b不是可变类型吗?

看看这个:https://www.cnblogs.com/lxy0/p/11356029.html#/cnblog/works/article/11356029

永恒的蓝色梦想 发表于 2020-3-20 10:49:00

风风魔王 发表于 2020-3-20 10:47
可变类型什么意思?b不是可变类型吗?

int没有方法来改变他自己
页: [1]
查看完整版本: 29讲课上例子 为什么全局变量作为实参传到函数里,函数结束参数有的变了,有的不变?