请问定义函数时的return有什么用呀?
大家好,我正跟着小甲鱼从零基础学习python,刚刚学到函数,感觉自己对于return的作用不是很理解。比如某次作业中的例子:def palindrome(string):
length = len(string)
last = length-1
length //= 2
flag = 1
for each in range(length):
if string != string:
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就会是个局部变量不是全局变量,但这样有啥影响吗?
谢谢大家~ https://baike.so.com/doc/5376362-5612479.html 1.你得弄清楚return和print的区别:
return:这个函数的返回值
print:单纯的打印
2.问题大大的!string如果是全局变量就能在整个程序中使用,而局部变量只在它所在的函数中起作用 本帖最后由 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 != string:
flag = 0
last -= 1
if flag == 1:
print('是回文联!')
else:
print('不是回文联!')
string = input('请输入一句话:')
palindrome(string)
总之,return设置返回值是为了函数能够给函数体外部发出反馈,达到某种目的用的。如果在函数体内就搞定问题了而不需要反馈,那么不需要return也是没问题的 既然是函数,正常情况下必定会有返回值,要返回值当然return。当然你也可以不返回值就不用return(当过程用,过程的概念,你学python应该没听过,在基它语言中没有返回值叫过程,有返回值叫函数) 本帖最后由 jackz007 于 2020-3-12 22:44 编辑
return 的字面含义是返回,可以把调用函数理解为去国外旅游,玩完了,需要回国的时候,一条 return 语句就可以让你回到当时从国内出发的地方。接下来该干啥还干啥,就像什么都没有发生过一样(指调用函数),一切都不受影响。所以,return 语句的作用就是结束函数调用,立即返回到函数的调用处。当然,return 也可以把一个或多个变量作为函数值反馈到调用处。 Hoiste 发表于 2020-3-12 22:07
string如果作为一个外部参数传入函数,函数内对string的修改都不会改变外部的string。
return的作用就是让 ...
谢谢,大概理解了~如果有return的话,未来写的代码中可以继续调用这个函数的返回值作为反馈,后续可以实现更多的功能,而不仅仅是在函数里print一下就完事了。
页:
[1]