鱼C论坛

 找回密码
 立即注册
查看: 2003|回复: 15

[已解决]函数的返回值

[复制链接]
发表于 2021-5-11 20:31:14 | 显示全部楼层 |阅读模式

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

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

x
  1. >>> def say():
  2.         print('好耶!')

  3. >>> say()
  4. 好耶!
  5. >>> print(say())
  6. 好耶!
  7. None
  8. >>>
复制代码

为什么直接调用没有None?
print有什么神奇功效嘛?
谢谢~
最佳答案
2021-5-11 23:00:31




不一样哈,数据类型都不一样

None 是 Python 特殊的一个数据对象,数据类型为 NoneType,而且 NoneType 类中仅有 None 这一个对象

我们不能创建除 None 以外为 NoneType 的对象

而 False 属于 布尔类型数值,[] 表示空列表 list 类型数据 ,{} 表示空字典,dict 类型数据

但是 空列表、空字典、空字符串 以及 None 都可以视为布尔类型值的 False,(这里的视为不是指等于哈,是指逻辑的真假)

具体为什么只有 None 不打印,应该就需要去看底层代码了,但是这个对象确实是一个特殊的数据类型哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-11 20:34:59 | 显示全部楼层
函数不写return,默认返回None。
单独执行say(), 没有谁接收返回值None,所以没有输出。
执行print(say()),实际是先执行了一遍say(),然后say函数的返回值被print函数接到了,它打印了返回值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-11 20:35:10 From FishC Mobile | 显示全部楼层
直接调用也有None,只是没有打印。函数本身如果没有返回值,默认返回None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-11 20:36:16 | 显示全部楼层

不是 print 神奇~ ,是 Python 的机制:若函数没有设置返回值(return) 则默认返回空即 None

print 函数只是将返回值打印到屏幕上而已,当你在交互窗口调用一个函数时候,会自动打印除 None 的返回值

但是如果在编辑器内调用函数没有执行 print 那么就不会自动打印到屏幕上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-11 20:46:21 | 显示全部楼层
Twilight6 发表于 2021-5-11 20:36
不是 print 神奇~ ,是 Python 的机制:若函数没有设置返回值(return) 则默认返回空即 None

print  ...

那False, 0, [], {} 这样的不是跟None一样嘛,为什么他们可以直接返回?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-11 20:47:31 | 显示全部楼层
qq1151985918 发表于 2021-5-11 20:35
直接调用也有None,只是没有打印。函数本身如果没有返回值,默认返回None

可是它不是就返回了一行嘛,None是不是要再空一行什么的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-11 20:48:29 | 显示全部楼层
suchocolate 发表于 2021-5-11 20:34
函数不写return,默认返回None。
单独执行say(), 没有谁接收返回值None,所以没有输出。
执行print(say() ...

谢谢你~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-11 21:11:49 From FishC Mobile | 显示全部楼层
柿子饼同学 发表于 2021-5-11 20:46
那False, 0, [], {} 这样的不是跟None一样嘛,为什么他们可以直接返回?

返回值和print是两个概念,话不多说
你也不是新人
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-11 21:27:36 | 显示全部楼层
本帖最后由 柿子饼同学 于 2021-5-11 21:33 编辑
wp231957 发表于 2021-5-11 21:11
返回值和print是两个概念,话不多说
你也不是新人


那None和False之类不是都是假嘛,有什么区别呐?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-11 21:38:42 | 显示全部楼层
函数不写return,默认返回None。
单独执行say(), 没有谁接收返回值None,所以没有输出。
执行print(say()),实际是先执行了一遍say(),然后say函数的返回值被print函数接到了,它打印了返回值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-5-11 22:36:43 | 显示全部楼层
xyangt 发表于 2021-5-11 21:38
函数不写return,默认返回None。
单独执行say(), 没有谁接收返回值None,所以没有输出。
执行print(say() ...

谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-11 23:00:31 | 显示全部楼层    本楼为最佳答案   




不一样哈,数据类型都不一样

None 是 Python 特殊的一个数据对象,数据类型为 NoneType,而且 NoneType 类中仅有 None 这一个对象

我们不能创建除 None 以外为 NoneType 的对象

而 False 属于 布尔类型数值,[] 表示空列表 list 类型数据 ,{} 表示空字典,dict 类型数据

但是 空列表、空字典、空字符串 以及 None 都可以视为布尔类型值的 False,(这里的视为不是指等于哈,是指逻辑的真假)

具体为什么只有 None 不打印,应该就需要去看底层代码了,但是这个对象确实是一个特殊的数据类型哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-11 23:05:03 | 显示全部楼层
Twilight6 发表于 2021-5-11 23:00
不一样哈,数据类型都不一样

None 是 Python 特殊的一个数据对象,数据类型为 NoneType,而且 N ...

学到了,谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-11 23:06:38 | 显示全部楼层



客气~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-11 23:19:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-13 11:07:46 | 显示全部楼层
学习学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 18:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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