免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2731 | 回复: 5
打印 上一主题 下一主题

用return和不用return的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-24 10:45 |只看该作者 |倒序浏览
  大家帮帮我这个菜鸟吧我0基础开始学的所以遇到问题比较多
函数里什么时候该用到return呢 我发觉有时候你加return和不加return 打印出来的结果是一样的 如果比如说返回父类的setitem方法
我可以 return fileinfo.__setitem__(self,key,item)也可以直接fileinfo.__setitem__(self,key,item)
如果 说不是用到return的跳出函数作用仅仅 希望用到他的返回值和返回函数功能
那么什么时候该调用呢
有些地方我不是很理解 有些函数返回的值是None所以如果你想通过打印这个函数来得到结果必须 用return返回被改变的那个变量 来打印他的值
但是实际上 你也可以不用return语句 只要运行函数 然后直接打印这个变量也可以

比如a=[1,2,3]
def s(b=5):
    a.append('4')
s()
print a
    和
a=[1,2,3]
def s(b=5):
    a.append('4')
    return a
print s()

   
结果是一样的那么这两种方法有什么区别 return是否是不必须的?
谢谢

论坛徽章:
0
2 [报告]
发表于 2009-02-24 10:54 |只看该作者
虽然你的例子结果看出来时候一样,,两者意思差别很多。
你的a变量是个list,默认是当前全局的,所以在其他函数里可以直接修改其中的值。
第二个函数则是修改了a的值,然后函数return a这个列表,你可以使用b=s()保存函数返回值

看你应用中怎么需要了,如果是只是类似修改全局的数据,那就不用return。一般都是用于xx操作,不需要返回值的那种
如果是通过调用xx函数返回一些东西,那就return值。

论坛徽章:
0
3 [报告]
发表于 2009-02-24 11:52 |只看该作者

回复 #2 xiaoyu9805119 的帖子

我其实就觉得 在需要函数指明结果的时候 用return 对于改变对象自身的函数 不用return

需要返回某个函数的时候用return
像UserDict中
def keys(self): return self.data.keys()
def items(self): return self.data.items()
这2个return加和不加区别很大 他实际就是把UserDict当成一个模拟的dictionary来用
如果不加return 返回的值就是None
我对于何时该加retun不怎么明确

如果我不知道该不该加return的时候如果我加了return会不会出错呢?
其实我需要用到return大多是返回一个函数结果 返回一个函数

论坛徽章:
0
4 [报告]
发表于 2009-02-24 13:01 |只看该作者
不是return的问题
是你定义的函数需要干什么,是需要定义一个操作的过程还是需要一个有返回的函数?

论坛徽章:
0
5 [报告]
发表于 2009-02-24 13:25 |只看该作者

回复 #4 xiaoyu9805119 的帖子

i know
thanks

论坛徽章:
0
6 [报告]
发表于 2009-02-24 14:01 |只看该作者

回复 #5 zhenglxd 的帖子

我以前记得好像是delphi里就区分过程和函数两个概念。

过程就是没返回值,纯属操作的一段代码的集合
而函数就是有返回值,仅此不同而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP