鱼C论坛

 找回密码
 立即注册
查看: 870|回复: 4

[已解决]return的疑问

[复制链接]
发表于 2020-2-28 00:06:02 | 显示全部楼层 |阅读模式

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

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

x
  1. def outer():
  2.     x=1
  3.     def inner():
  4.         print(x)

  5.     return inner

  6. fun=outer()
  7. fun()
复制代码

正常的代码如上,结果是1

没搞清楚 如果return inner()的话,看到资料说 return 函数名不加括号 就是返回函数体,加括号就是返回函数结果,不累计额具体是什么意思

我试了试
  1. def outer():
  2.     x=1
  3.     def inner():
  4.         print(x)


  5.     return inner()

  6. fun=outer()
  7. fun()
复制代码

13.jpg
报了这个错误:TypeError: 'NoneType' object is not callable

意思是 没有返回值的意思吗(疑问,我也不知道,我猜的)

我又试了试
  1. def outer():
  2.     x=1
  3.     def inner():
  4.         print(x)
  5.         return '你好'


  6.     return inner()

  7. fun=outer()
  8. fun()
复制代码


14.jpg
又报个这错误。

我现在的问题是,,return 返回函数后面加不加的括号差别能不能有个比较形象的例子能让我理解消化下。谢谢


最佳答案
2020-2-28 00:18:33
  1. # -*- coding: utf-8 -*-
  2. def outer():
  3.     x=1
  4.     return x

  5. fun=outer()#加()返回函数结果x=1
  6. fun1=outer #不加()返回函数
  7. print(fun,type(fun))
  8. print(fun1,type(fun1))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-28 00:18:33 | 显示全部楼层
本帖最后由 walleeee 于 2020-2-28 00:20 编辑
  1. def outer():
  2.     x=1
  3.     def inner():
  4.         print(x)
  5.         return 333
  6.     return inner()

  7. fun=outer()
  8. fun
复制代码


你run一下看看能不能理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 00:18:33 | 显示全部楼层    本楼为最佳答案   
  1. # -*- coding: utf-8 -*-
  2. def outer():
  3.     x=1
  4.     return x

  5. fun=outer()#加()返回函数结果x=1
  6. fun1=outer #不加()返回函数
  7. print(fun,type(fun))
  8. print(fun1,type(fun1))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 00:29:38 | 显示全部楼层
      返回函数名不带括号,代表返回的是函数的调用地址,如果返回的是函数名带括号,那就是返回对函数的调用结果。
      希望通过下面的代码能让楼主加深对相关概念的理解
  1.       f1 , f2 = input , print
  2.       s = f1('请输入点什么:') . strip()
  3.       f2('你输入的是' , s)
复制代码

      没错,在这个代码中,f1() 是 input(),f2() 就是 print()
      
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-29 15:35:04 | 显示全部楼层

明白了。
可能是我还是新手,想不到不加括号这种,返回函数,在什么情况下会用得着,就钻牛角尖到这里,想不通了。
能给我举个例子,这种不加括号只返回函数在什么情况下使用吗?,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 01:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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