jcpython2 发表于 2022-9-18 23:16:28

a,b,c=0,0,0 不可简化为 a,b,c=0?

因为我以为 x,y,z = z,x,y没错所以↓


a,b,c=0,0,0   不可简化为 a,b,c=0?

报错TypeError: 'int' object is not iterable


当我输入a,b,c=0,python以为我干了什么坏事??

kogawananari 发表于 2022-9-18 23:24:34

为什么不用a=b=c=0{:10_327:}

jcpython2 发表于 2022-9-18 23:25:48

kogawananari 发表于 2022-9-18 23:24
为什么不用a=b=c=0

对哦
这方法我今天还写过

但那为啥a,b,c=0出错? 给我的感觉python没那么多规规矩矩,咋写都可以

lassiter 发表于 2022-9-19 00:09:24

因为这个不是matlab呀,而且a=b=c=0和a,b,c=0,0,0    结果也不一样,前一个会导致abc用同一个内存地址

wp231957 发表于 2022-9-19 06:39:15

a,b,c这是一个三元组在给它赋值为0时,会尝试把0转成一个三元组,所以会报错,整型数字不可迭代

hveagle 发表于 2022-9-19 06:59:27

推荐:a, b, c=0, 0, 0

hveagle 发表于 2022-9-19 07:00:58

假设你
l =
a, b, c=l
a
0
b
0
c
0

lymbwx 发表于 2022-9-19 08:57:29


为什么不用a=b=c=0

jcpython2 发表于 2022-9-19 10:54:31

lassiter 发表于 2022-9-19 00:09
因为这个不是matlab呀,而且a=b=c=0和a,b,c=0,0,0    结果也不一样,前一个会导致abc用同一个内存地址

a=b=c=0 会用同一个内存地址这个我更加不明白了
如果 a=b=c=d是用同一个内存地址,abc挂在d上,这样我还好理解,但a=b=c=0这个0是int吧?也会被挂上?

jcpython2 发表于 2022-9-19 11:00:52

wp231957 发表于 2022-9-19 06:39
a,b,c这是一个三元组在给它赋值为0时,会尝试把0转成一个三元组,所以会报错,整型数字不可迭代

我理解整型数字不可迭代
但你说的python试把0转成一个三元组,我就不懂python里面的运行原理了,这个我先记下以后再看能不能弄懂

Twilight6 发表于 2022-9-19 11:51:29


Python 要将 右边的数据依次赋值给左边的变量名,从报错中可以看出,底层应该是使用迭代器来进行依次赋值的

所以你右边的数据需要的是一个可迭代的对象,而 int 类型数据不可迭代,所以抛出了 TypeError: 'int' object is not iterable

lassiter 发表于 2022-9-19 22:37:08

jcpython2 发表于 2022-9-19 10:54
a=b=c=0 会用同一个内存地址这个我更加不明白了
如果 a=b=c=d是用同一个内存地址,abc挂在d上,这样我还 ...

是的,有一个内置函数id(a)可以查看内存地址   ,你可以比较比较

kogawananari 发表于 2022-9-20 10:06:53

lassiter 发表于 2022-9-19 22:37
是的,有一个内置函数id(a)可以查看内存地址   ,你可以比较比较

a = 0
b = 0
a和b不也是同一个内存地址吗{:10_277:} 这和怎么赋值没啥区别

鸡腿帅到爆炸了 发表于 2022-9-20 13:18:50

为什么不用a=b=c=0

lassiter 发表于 2022-9-21 21:41:14

鸡腿帅到爆炸了 发表于 2022-9-20 13:18
为什么不用a=b=c=0

你说的好有道理
页: [1]
查看完整版本: a,b,c=0,0,0 不可简化为 a,b,c=0?