鱼C论坛

 找回密码
 立即注册
查看: 1847|回复: 14

[已解决]请教大家一个内部函数的问题,希望能用大白话给小白解释一下,谢谢啦

[复制链接]
发表于 2021-1-24 16:46:55 | 显示全部楼层 |阅读模式

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

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

x
return function()   和   return function的区别是啥啊?
第一个l例子:def funx(x):
                  def funy(y):
                       return x*y
                  return funy
第二个例子:def fun1():
                  x=5
                  def fun2():
                        t=x+x
                        return t
                  return fun2()

希望大佬结合例子说说,我没学过c++和c语言,但是来来回回真搞不懂
最佳答案
2021-1-24 17:00:45
本帖最后由 逃兵 于 2021-1-24 17:08 编辑

你可以这么理解
function是个工具
function()是拿这件工具做什么事

第一个例子
  1. def funx(x):
  2.     def funy(y):
  3.        return x*y
  4.     return funy
复制代码


我们给funx()传入一个参数5,会返回一个工具funy
  1. >>> funx(5)
  2. <function funx.<locals>.funy at 0x0000000002F10B88>
复制代码

这个时候的funy相当于
  1. funy = funx(5)
复制代码


我们再给funy传入个参数10
  1. >>> funy(10)
  2. 50
复制代码


联合起来

  1. >>> funx(5)(10)
  2. 50
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-24 16:51:15 | 显示全部楼层
C:\Users\lenovo\Desktop\1649
不好意思,我严格缩进了,不知道发过去为啥这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 16:52:02 | 显示全部楼层
C:\Users\lenovo\Desktop\1649.png

不好意思,我严格缩进了,不知道发过去为啥这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 16:52:35 | 显示全部楼层
为啥不能上传图片...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-24 17:00:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 逃兵 于 2021-1-24 17:08 编辑

你可以这么理解
function是个工具
function()是拿这件工具做什么事

第一个例子
  1. def funx(x):
  2.     def funy(y):
  3.        return x*y
  4.     return funy
复制代码


我们给funx()传入一个参数5,会返回一个工具funy
  1. >>> funx(5)
  2. <function funx.<locals>.funy at 0x0000000002F10B88>
复制代码

这个时候的funy相当于
  1. funy = funx(5)
复制代码


我们再给funy传入个参数10
  1. >>> funy(10)
  2. 50
复制代码


联合起来

  1. >>> funx(5)(10)
  2. 50
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-1-24 17:01:55 | 显示全部楼层
C:\Users\lenovo\Desktop
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-24 17:14:00 | 显示全部楼层

新鱼油上传不了图片的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 17:18:36 | 显示全部楼层
逃兵 发表于 2021-1-24 17:00
你可以这么理解
function是个工具
function()是拿这件工具做什么事

也就是说return function是调用嵌入的函数function。这时候需要对它赋值,才会返回结果,这个返回结果其实就是return function(),也就是说return function()是相当于return  5*10的,是吧?(假设x=5,y=10)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 17:21:52 | 显示全部楼层
Daniel_Zhang 发表于 2021-1-24 17:14
新鱼油上传不了图片的

好想要你头像当表情包啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-24 17:29:49 | 显示全部楼层
123Marchapril 发表于 2021-1-24 17:21
好想要你头像当表情包啊


百度搜的

猫咪 动图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 18:00:54 | 显示全部楼层
逃兵 发表于 2021-1-24 17:00
你可以这么理解
function是个工具
function()是拿这件工具做什么事

返回了工具之后,对其进行赋值就相当于拿工具做事,对吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-24 18:10:34 | 显示全部楼层
123Marchapril 发表于 2021-1-24 18:00
返回了工具之后,对其进行赋值就相当于拿工具做事,对吧

对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 18:27:37 | 显示全部楼层

一:是不是嵌套的函数必须得有一个未知数,就是不确定的数才用return function。二:如果嵌套的函数不用赋值就能确定下来,就只能用return function()了,是吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-24 18:32:18 | 显示全部楼层
123Marchapril 发表于 2021-1-24 18:27
一:是不是嵌套的函数必须得有一个未知数,就是不确定的数才用return function。二:如果嵌套的函数不用 ...

这是不对的
没有参数的函数是只能做一件事的工具
不加括号还是返回这个工具
加括号是返回这个工具所做的事情
例子:
  1. def a():
  2.     def b():
  3.         return '我被调用了'
  4.     return b
复制代码

运行:
  1. >>> a()
  2. <function a.<locals>.b at 0x0000000002EACEE8>
  3. >>> a()()
  4. '我被调用了'
  5. >>> test = a()
  6. >>> test
  7. <function a.<locals>.b at 0x0000000002EC2DC8>
  8. >>> test()
  9. '我被调用了'
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 18:45:36 | 显示全部楼层
逃兵 发表于 2021-1-24 18:32
这是不对的
没有参数的函数是只能做一件事的工具
不加括号还是返回这个工具

大概了解了,非常感谢您!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-17 05:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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