Crossin的编程教室

标题: 第十九课(函数)的问题 [打印本页]

作者: xiaophedap    时间: 2018-5-30 21:55
标题: 第十九课(函数)的问题
代码:
-----------------------------------------------------------------------------
def sayHello():     #定义函数sayHello
    print ("Hello world!")      #函数体

sayHello()      #调用函数sayHello
sayHello()      #可以重复调用
print (sayHello())      #自己尝试加的,最后为什么会出来多一个None呢?


以下是运行的数据结果:
-----------------------------------------------------------------------------
Hello world!
Hello world!
Hello world!
None


想请教各位的问题:
最后为什么会出来多一个None呢?


作者: crossin先生    时间: 2018-5-31 00:23
函数你不加return,默认返回值是None
作者: xiaophedap    时间: 2018-5-31 01:11
crossin先生 发表于 2018-5-31 00:23
函数你不加return,默认返回值是None

感谢坛主,理解默认返回值是None了。

想补充请教的是:
前面调用的两个函数sayHello(),它们直接执行的是print ("Hello world!")这条语句;
而最后print (sayHello())这条命令,除了执行了print ("Hello world!")这条语句之外,print()还打印出sayHello()这个函数的默认返回值;
因此,最后这条命令最后显示None,而前两条sayHello()函数的调用,仅仅只输出了“Hello world!”

为了验证我以上的理解,修改代码为:
-----------------------------------------------------------
def sayHello():     #定义函数sayHello
     print ("Hello world!")      #函数体
     return True

sayHello()      #调用函数sayHello
sayHello()      #可以重复调用
print (sayHello())      #最后应该输出True


代码输出为:
-----------------------------------------------------------
Hello world!
Hello world!
Hello world!
True
作者: crossin先生    时间: 2018-5-31 15:32
xiaophedap 发表于 2018-5-31 01:11
感谢坛主,理解默认返回值是None了。

想补充请教的是:

最后因为加了print,返回值被作为参数传给了print函数
前两个的返回值因为没有使用,不产生任何效果
作者: xiaophedap    时间: 2018-6-2 00:15
crossin先生 发表于 2018-5-31 15:32
最后因为加了print,返回值被作为参数传给了print函数
前两个的返回值因为没有使用,不产生任何效果 ...

理解了。解释得清晰明了。谢谢!




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5