鱼C论坛

 找回密码
 立即注册
查看: 2464|回复: 6

[已解决]请问定义函数时的return有什么用呀?

[复制链接]
发表于 2020-3-12 21:53:24 | 显示全部楼层 |阅读模式

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

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

x
大家好,我正跟着小甲鱼从零基础学习python,刚刚学到函数,感觉自己对于return的作用不是很理解。比如某次作业中的例子:
def palindrome(string):
    length = len(string)
    last = length-1
    length //= 2
    flag = 1
    for each in range(length):
        if string[each] != string[last]:
            flag = 0
        last -= 1
    if flag == 1:
        return 1
    else:
        return 0

string = input('请输入一句话:')
if palindrome(string) == 1:
    print('是回文联!')
else:
    print('不是回文联!')

我写代码的时候,是直接在函数里写了if XXX:print(XXX)这种,没有用到return。请问答案里这种先用函数return一个值,再在函数外写print的条件有什么优点吗?并且我的string = input(XXX)也是写在函数里的,这次课知道了我这样写string就会是个局部变量不是全局变量,但这样有啥影响吗?

谢谢大家~
最佳答案
2020-3-12 22:07:24
本帖最后由 Hoiste 于 2020-3-12 22:09 编辑

string如果作为一个外部参数传入函数,函数内对string的修改都不会改变外部的string。
return的作用就是让函数有返回值,在不设置return的函数内,我们调用函数本身的话,它的返回值是None,如上面的例子如果print(palindrome(string)),结果是0或者1,而如果没有return,打印的这是None。这里只存在区别,根据不同情况判断需不需要使用函数返回值而不分优劣。
比如这一题,我们需要判断输入的字符串是不是回文联,既然决定用函数的方法判断,我们需要函数在处理完字符串后告诉我们是不是回文联,而是不是的判断放在函数体外,那么就需要函数把判断结果反馈给外面的if条件,就需要返回0或1或者布尔类型的False和True,用到了return。事实上如果把判断放在函数体内,那么不用返回值也是可以的,这样代码就变成这样了:
def palindrome(string):
    length = len(string)
    last = length-1
    length //= 2
    flag = 1
    for each in range(length):
        if string[each] != string[last]:
            flag = 0
        last -= 1
    if flag == 1:
        print('是回文联!')
    else:
        print('不是回文联!')

string = input('请输入一句话:')
palindrome(string)

总之,return设置返回值是为了函数能够给函数体外部发出反馈,达到某种目的用的。如果在函数体内就搞定问题了而不需要反馈,那么不需要return也是没问题的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 21:56:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 22:00:46 | 显示全部楼层
1.你得弄清楚return和print的区别:
return:这个函数的返回值
print:单纯的打印

2.问题大大的!string如果是全局变量就能在整个程序中使用,而局部变量只在它所在的函数中起作用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 22:07:24 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Hoiste 于 2020-3-12 22:09 编辑

string如果作为一个外部参数传入函数,函数内对string的修改都不会改变外部的string。
return的作用就是让函数有返回值,在不设置return的函数内,我们调用函数本身的话,它的返回值是None,如上面的例子如果print(palindrome(string)),结果是0或者1,而如果没有return,打印的这是None。这里只存在区别,根据不同情况判断需不需要使用函数返回值而不分优劣。
比如这一题,我们需要判断输入的字符串是不是回文联,既然决定用函数的方法判断,我们需要函数在处理完字符串后告诉我们是不是回文联,而是不是的判断放在函数体外,那么就需要函数把判断结果反馈给外面的if条件,就需要返回0或1或者布尔类型的False和True,用到了return。事实上如果把判断放在函数体内,那么不用返回值也是可以的,这样代码就变成这样了:
def palindrome(string):
    length = len(string)
    last = length-1
    length //= 2
    flag = 1
    for each in range(length):
        if string[each] != string[last]:
            flag = 0
        last -= 1
    if flag == 1:
        print('是回文联!')
    else:
        print('不是回文联!')

string = input('请输入一句话:')
palindrome(string)

总之,return设置返回值是为了函数能够给函数体外部发出反馈,达到某种目的用的。如果在函数体内就搞定问题了而不需要反馈,那么不需要return也是没问题的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 22:08:27 | 显示全部楼层
既然是函数,正常情况下必定会有返回值,要返回值当然return。当然你也可以不返回值就不用return(当过程用,过程的概念,你学python应该没听过,在基它语言中没有返回值叫过程,有返回值叫函数)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 22:14:53 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-12 22:44 编辑

       return 的字面含义是返回,可以把调用函数理解为去国外旅游,玩完了,需要回国的时候,一条 return 语句就可以让你回到当时从国内出发的地方。接下来该干啥还干啥,就像什么都没有发生过一样(指调用函数),一切都不受影响。所以,return 语句的作用就是结束函数调用,立即返回到函数的调用处。当然,return 也可以把一个或多个变量作为函数值反馈到调用处。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-13 21:19:18 | 显示全部楼层
Hoiste 发表于 2020-3-12 22:07
string如果作为一个外部参数传入函数,函数内对string的修改都不会改变外部的string。
return的作用就是让 ...

谢谢,大概理解了~如果有return的话,未来写的代码中可以继续调用这个函数的返回值作为反馈,后续可以实现更多的功能,而不仅仅是在函数里print一下就完事了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 03:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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