whj1566 发表于 2022-2-23 15:38:30

求助大神两个问题(不相关):append和变量引用

1, >>> a =
>>> a

>>> a.append(9)
>>> a

>>> a.append(1)
>>> a

>>> b = a.append(2)
>>> b
>>> b
>>> type(b)
<class 'NoneType'>

为什么a.append赋值给b,b是NoneType呢?


2,>>> a =
>>> b = a
>>> a =
>>> b



>>> a =
>>> b = a
>>> a = 5
>>> b


一开始a与b都是数值的引用,a is b。按小甲鱼教学一个变都要变,但按照上述实例操作,局部元素赋值不会生成新的内存(a is b),整体赋值生成新的内存(a is not b)。底层逻辑是什么啊?

大马强 发表于 2022-2-23 15:38:31

1、因为append方法没有返回值 所以b是无类型
2、
>>> a =
>>> b = a
a,b全部指向列表
但是你重新 a = , a就会重新指向 列表

python爱好者. 发表于 2022-2-23 15:48:27

因为 python 任何函数方法都是有返回结果的,你这里:
b = a.append(2)
中的:
a.append(2)
返回的结果是 "None" ,因为当函数没有返回值时,便会返回 "None" !
所以赋值给 b 之后,b 的类型当然就是没有类型 "NoneType" 啦!

python爱好者. 发表于 2022-2-23 15:50:29

懂了吗?不懂可以再问!懂了就给个好评呗!!!
{:10_257:}{:10_297:}{:10_281:}{:10_298:}
打字不易!请给个好评!!!
兄弟!给个好评!求求了!!!
{:10_254:}{:10_254:}{:10_254:}{:10_254:}

云龙烛火 发表于 2022-2-23 15:51:33

第1个问题,a.append()是调用一个方法给列表中添加元素,没有生成任何值,只是一个操作,不是给变量赋值用的,所以返回nonetype

云龙烛火 发表于 2022-2-23 15:53:38

第二个问题我也不知道为啥,问小甲鱼吧{:10_266:}{:10_269:}{:10_247:}

python爱好者. 发表于 2022-2-23 16:03:14

尽然忘记解第二题了{:10_292:}

python爱好者. 发表于 2022-2-23 16:07:16

python爱好者. 发表于 2022-2-23 16:03
尽然忘记解第二题了

第二题讲解,
答案部分第 1 题!
页: [1]
查看完整版本: 求助大神两个问题(不相关):append和变量引用