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以为我干了什么坏事?? 为什么不用a=b=c=0{:10_327:} kogawananari 发表于 2022-9-18 23:24
为什么不用a=b=c=0
对哦
这方法我今天还写过
但那为啥a,b,c=0出错? 给我的感觉python没那么多规规矩矩,咋写都可以 因为这个不是matlab呀,而且a=b=c=0和a,b,c=0,0,0 结果也不一样,前一个会导致abc用同一个内存地址 a,b,c这是一个三元组在给它赋值为0时,会尝试把0转成一个三元组,所以会报错,整型数字不可迭代 推荐:a, b, c=0, 0, 0 假设你
l =
a, b, c=l
a
0
b
0
c
0
为什么不用a=b=c=0 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吧?也会被挂上?
wp231957 发表于 2022-9-19 06:39
a,b,c这是一个三元组在给它赋值为0时,会尝试把0转成一个三元组,所以会报错,整型数字不可迭代
我理解整型数字不可迭代
但你说的python试把0转成一个三元组,我就不懂python里面的运行原理了,这个我先记下以后再看能不能弄懂
Python 要将 右边的数据依次赋值给左边的变量名,从报错中可以看出,底层应该是使用迭代器来进行依次赋值的
所以你右边的数据需要的是一个可迭代的对象,而 int 类型数据不可迭代,所以抛出了 TypeError: 'int' object is not iterable
jcpython2 发表于 2022-9-19 10:54
a=b=c=0 会用同一个内存地址这个我更加不明白了
如果 a=b=c=d是用同一个内存地址,abc挂在d上,这样我还 ...
是的,有一个内置函数id(a)可以查看内存地址 ,你可以比较比较 lassiter 发表于 2022-9-19 22:37
是的,有一个内置函数id(a)可以查看内存地址 ,你可以比较比较
a = 0
b = 0
a和b不也是同一个内存地址吗{:10_277:} 这和怎么赋值没啥区别 为什么不用a=b=c=0 鸡腿帅到爆炸了 发表于 2022-9-20 13:18
为什么不用a=b=c=0
你说的好有道理
页:
[1]