繁体   English   中英

了解 python 中的嵌套函数

[英]Understanding Nested functions in python

我是stackflow的新手。 如果有人可以帮助我,我将不胜感激。

我必须解决这个问题:

定义一个嵌套的 function,称为nested_sum,其中在 function 的第一部分中,您接受一个名为 x 的参数,而在第二部分中(ZC1C425268E68385D1AB5074C17A9F 内部的另一个参数)。 在 function 里面你必须计算 x 和 y 的总和。

要测试您的 function 创建一个名为res_1的变量,您将x参数传递给nested_sum ,然后创建一个名为res_2的变量,您将在其中传递res_1变量的y参数以获得最终解决方案。

res_2x等于 2 , res_1的 y 等于 10 。

在网上看了之后,我发现了一个类似的代码,但我真的不明白它是如何工作的!

def nested_sum(x):
    def in_sum(y):
        return x+y
    return in_sum

res_1 = nested_sum(2)
res_2 = res_1(10)

谢谢

首先你需要意识到res_1就是in_sum() function。

因此,根据您的代码:

nested_sum(2)x = 2然后返回in_sum() function。 res_2 = res_1(10) = in_sum(10)

因此x = 2y = 10 ,因此

x + y = 2 + 10 = 12

您可以编写如下代码(更容易理解):

def nested_sum(x):
    def in_sum(y):
        return x+y
    return in_sum



res_1 = nested_sum(2) #nested_sum return in_sum(y) location with x=2 so --> res_1= in_sum (2+y)
res_2 = res_1(10)     #Cause res_1 points in_sum(2+y) res2=in_sum(2+10)=12

首先,Python中的function是一个object。 把它想象成一张纸,上面写着 arguments 它需要做什么。

nested_sum(2)创建一张新的纸,写在上面:«接受参数,加 2 并返回。»

nested_sum()会在其中写下一张新纸:«接受参数,添加并返回它。»

让我重命名代码中的变量:

def increaser_function_maker(x):

    def the_new_function(y):
        return x + y

    return the_new_function

function_that_takes_number_and_adds_two_to_it = increaser_function_maker(2)
result = function_that_takes_number_and_adds_two_to_it(10)

还有另一种方法可以制作这个 function。 也许会更容易理解:

def increaser_function_maker(value_to_add):
    return lambda i: i + value_to_add

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM