123Marchapril 发表于 2021-1-24 16:46:55

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

return function()   和   return function的区别是啥啊?{:5_104:}
第一个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语言,但是来来回回真搞不懂

123Marchapril 发表于 2021-1-24 16:51:15

C:\Users\lenovo\Desktop\1649
不好意思,我严格缩进了,不知道发过去为啥这样

123Marchapril 发表于 2021-1-24 16:52:02

C:\Users\lenovo\Desktop\1649.png

不好意思,我严格缩进了,不知道发过去为啥这样

123Marchapril 发表于 2021-1-24 16:52:35

为啥不能上传图片...

逃兵 发表于 2021-1-24 17:00:45

本帖最后由 逃兵 于 2021-1-24 17:08 编辑

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

第一个例子
def funx(x):
    def funy(y):
       return x*y
    return funy

我们给funx()传入一个参数5,会返回一个工具funy
>>> funx(5)
<function funx.<locals>.funy at 0x0000000002F10B88>
这个时候的funy相当于
funy = funx(5)

我们再给funy传入个参数10
>>> funy(10)
50

联合起来

>>> funx(5)(10)
50

123Marchapril 发表于 2021-1-24 17:01:55

C:\Users\lenovo\Desktop

Daniel_Zhang 发表于 2021-1-24 17:14:00

123Marchapril 发表于 2021-1-24 17:01


新鱼油上传不了图片的{:10_285:}

123Marchapril 发表于 2021-1-24 17:18:36

逃兵 发表于 2021-1-24 17:00
你可以这么理解
function是个工具
function()是拿这件工具做什么事


也就是说return function是调用嵌入的函数function。这时候需要对它赋值,才会返回结果,这个返回结果其实就是return function(),也就是说return function()是相当于return5*10的,是吧?(假设x=5,y=10)

123Marchapril 发表于 2021-1-24 17:21:52

Daniel_Zhang 发表于 2021-1-24 17:14
新鱼油上传不了图片的

好想要你头像当表情包啊

Daniel_Zhang 发表于 2021-1-24 17:29:49

123Marchapril 发表于 2021-1-24 17:21
好想要你头像当表情包啊

百度搜的

猫咪 动图

123Marchapril 发表于 2021-1-24 18:00:54

逃兵 发表于 2021-1-24 17:00
你可以这么理解
function是个工具
function()是拿这件工具做什么事


返回了工具之后,对其进行赋值就相当于拿工具做事,对吧

逃兵 发表于 2021-1-24 18:10:34

123Marchapril 发表于 2021-1-24 18:00
返回了工具之后,对其进行赋值就相当于拿工具做事,对吧

对的

123Marchapril 发表于 2021-1-24 18:27:37

逃兵 发表于 2021-1-24 18:10
对的

一:是不是嵌套的函数必须得有一个未知数,就是不确定的数才用return function。二:如果嵌套的函数不用赋值就能确定下来,就只能用return function()了,是吧

逃兵 发表于 2021-1-24 18:32:18

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

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

运行:
>>> a()
<function a.<locals>.b at 0x0000000002EACEE8>
>>> a()()
'我被调用了'
>>> test = a()
>>> test
<function a.<locals>.b at 0x0000000002EC2DC8>
>>> test()
'我被调用了'

123Marchapril 发表于 2021-1-24 18:45:36

逃兵 发表于 2021-1-24 18:32
这是不对的
没有参数的函数是只能做一件事的工具
不加括号还是返回这个工具


大概了解了,非常感谢您!
{:5_109:}
页: [1]
查看完整版本: 请教大家一个内部函数的问题,希望能用大白话给小白解释一下,谢谢啦