鱼C论坛

 找回密码
 立即注册
查看: 820|回复: 13

python16讲创建函数的一个小问题

[复制链接]
发表于 2019-3-24 16:05:55 | 显示全部楼层 |阅读模式

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

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

x
>>> def MyNameIs(name):
              print('Hello'+name)

       
>>> MyNameIs('Harry')
HelloHarry


>>> print(MyNameIs('Harry'))
HelloHarry
None


----------------------------------------------------------
如上
我自己随便创了一个函数
但是为什么红色部分打出来就没问题
绿色部分就要打出来一个None
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-3-24 16:06:40 | 显示全部楼层
不好意思标题错了是17讲
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-24 16:17:30 | 显示全部楼层
自定义的 函数 没有 返回值,所以结果为 None
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-3-24 16:45:29 | 显示全部楼层
13572044595 发表于 2019-3-24 16:17
自定义的 函数 没有 返回值,所以结果为 None

轻微为什么None之前又返回了一个HelloHarry呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-24 16:46:02 | 显示全部楼层
deku_desu 发表于 2019-3-24 16:45
轻微为什么None之前又返回了一个HelloHarry呢

不好意思,没有轻微
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-24 17:03:05 | 显示全部楼层
  1. >>> print(MyNameIs('Harry'))
复制代码


很明显 你这里执行两个print 语句  所以输出两行  没毛病
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-24 18:34:08 | 显示全部楼层
本帖最后由 heidern0612 于 2019-3-24 18:37 编辑
deku_desu 发表于 2019-3-24 16:46
不好意思,没有轻微

MyNameIs('Harry')  是实例调用,激活了函数,打印了print的内容。

而你print(MyNameIs('Harry')) ,只是内部激活了函数,函数调用后激活的是print内容(相当于你print(print('Hello'+name))了。)。

但是函数本身并没有任何值(因为没有return值)。

这么说有点绕,举个简单的例子吧:

比如说函数定义代表图纸,而print代表制造。

我简单的调用函数,相当于把图纸实例化,制造出了图纸的实际内容(制造图纸内容)

而当我 制造(制造图纸内容)时,实际制造的还只是图纸的内容,但是我括号外面的这个制造就是空值了。  

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-24 18:47:17 | 显示全部楼层
内层函数没有返回值,
在Python中,没有返回值的函数都返回None,所以打印None,
相当于你在MyNameIs()函数的最后一句加上了return None
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-24 19:32:11 | 显示全部楼层
heidern0612 发表于 2019-3-24 18:34
MyNameIs('Harry')  是实例调用,激活了函数,打印了print的内容。

而你print(MyNameIs('Harry')) ,只 ...

终于看懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-24 21:13:50 | 显示全部楼层
heidern0612 发表于 2019-3-24 18:34
MyNameIs('Harry')  是实例调用,激活了函数,打印了print的内容。

而你print(MyNameIs('Harry')) ,只 ...

就是说我print((MyNameIs('Harry'))之后,python会先执行内层函数,所以第一行返回HelloHarry,然后执行外面一层的适合,因为我的MyNameIs()没有定义有返回值,所以print这个玩意出来None
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-24 21:21:35 | 显示全部楼层
把print(MyNameIs('Harry'))分开了就好理解了呀,这是执行了两个语句
s = MyNameIs('Harry')
print(s)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-24 21:31:10 | 显示全部楼层
>>> def love():
        return( )

>>> love()
()

-------------------------------------
还有就是这个问题 如果我干脆就return什么都不打,返回值好像是none。我打了return(‘xxx’),返回值就是xxx。但是我打return(),返回值就变成了()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-24 23:15:10 | 显示全部楼层
deku_desu 发表于 2019-3-24 21:31
>>> def love():
        return( )

return 是配合 自定义函数 使用的,
return 后面是什么 就返回什么,
没有return,函数功能再多,也不会输出任何东西~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-25 07:45:21 | 显示全部楼层
deku_desu 发表于 2019-3-24 21:13
就是说我print((MyNameIs('Harry'))之后,python会先执行内层函数,所以第一行返回HelloHarry,然后执行 ...

是这个意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-14 19:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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