簡體   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