鱼C论坛

 找回密码
 立即注册
查看: 3853|回复: 10

python 中print 返回值为 None 为什么

[复制链接]
发表于 2022-10-19 17:38:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我做了一个测试
a='()()()('
b=[]
b=b.extend(a)

print(b)的时候范围值为None

我理解操作的时候没必要用 b=   直接b.extend(a)就好了
但是我就是想知道为什么b=b.extend(a) 操作的时候 打印 b 会是None 呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-19 17:44:10 | 显示全部楼层
b.extend(a)是将a添加到b中,而b = b.extend(a)中,b.extend(a)的返回值是None,所以b就是None.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-19 17:57:37 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-19 19:36 编辑

          列表属于可修改对象,也就是说,对象的方法具有自修改能力,无需赋值,所以,可修改对象的的绝大部分方法都是无返回值的,像楼主使用的 extend() 就属于其中之一,这种方法直接调用就好,对象即可自行修改到位,不可以赋值。
a='()()()('
b=[]
b.extend(a)
print(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-20 10:15:10 | 显示全部楼层
jackz007 发表于 2022-10-19 17:57
列表属于可修改对象,也就是说,对象的方法具有自修改能力,无需赋值,所以,可修改对象的的绝大 ...

我现在理解了  有可能后面的课程会讲, 我还没学到吧!
其实对一个变量赋值的话必须是那个值要有返回值的,不然的话赋的值就不存在了。
并且用条件判断的话也必须是 两边的返回值进行判断,对吧!
假如入a=[1,2]  b=[]  那么b.extend(a)==a 也是false的, 因为左边的没有返回值,右边的有

那这里就有一个情况了 没有返回值是不是就是等于 空呢? 我测试了下也不相等 那么None 仅仅是代表没有返回值的意思吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-20 10:15:54 | 显示全部楼层
jackz007 发表于 2022-10-19 17:57
列表属于可修改对象,也就是说,对象的方法具有自修改能力,无需赋值,所以,可修改对象的的绝大 ...

我现在理解了  有可能后面的课程会讲, 我还没学到吧!
其实对一个变量赋值的话必须是那个值要有返回值的,不然的话赋的值就不存在了。
并且用条件判断的话也必须是 两边的返回值进行判断,对吧!
假如入a=[1,2]  b=[]  那么b.extend(a)==a 也是false的, 因为左边的没有返回值,右边的有

那这里就有一个情况了 没有返回值是不是就是等于 空呢? 我测试了下也不相等 那么None 仅仅是代表没有返回值的意思吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-20 10:18:35 | 显示全部楼层
tommyyu 发表于 2022-10-19 17:44
b.extend(a)是将a添加到b中,而b = b.extend(a)中,b.extend(a)的返回值是None,所以b就是None.

我在idel 模式中看到b.extend(a) 的返回值什么都没有。 并没有显示None
是不是什么都没有就是None的意思呢?
这个 None 也 貌似也不等于 空
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-20 10:28:42 | 显示全部楼层
paulwang 发表于 2022-10-20 10:15
我现在理解了  有可能后面的课程会讲, 我还没学到吧!
其实对一个变量赋值的话必须是那个值要有返回值 ...

        是的,如果函数没有返回值,那它返回的就是 None。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-10-20 10:29:54 | 显示全部楼层
paulwang 发表于 2022-10-20 10:18
我在idel 模式中看到b.extend(a) 的返回值什么都没有。 并没有显示None
是不是什么都没有就是None的意思 ...

None 比较特殊,直接输入None 他也不打印
>>> None
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-10-21 11:09:44 | 显示全部楼层
本帖最后由 yangmiao07 于 2022-10-21 11:14 编辑

a="()()()("
b1=[]
b2=b1.extend(a)
b1
['(', ')', '(', ')', '(', ')', '(']
print(b2)
None

你的两个b,其实并不是一个东西的
b.extend(a):是列表b调用方法新增元素,实现结果是给列表b新增了一个元素,但是这个调用过程是没有返回值的,所以你b=b.extend(a),后面这个b就是none
这个有疑问,你可以看删除的两个方法,pop()有返回值,remove()没有返回值,是一个道理
list=["A","B","C"]
aa=list.remove("A")
bb=list.pop(1)
print(aa,bb)
……None C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 11:24:15 | 显示全部楼层
yangmiao07 发表于 2022-10-21 11:09
a="()()()("
b1=[]
b2=b1.extend(a)

看你这个,这个好像就能明白一点了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-22 17:19:30 | 显示全部楼层
同问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 09:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表