我剛剛參加了資料科學培訓課程。在資料科學的前期作業中,有一些“基本的”python 東西,我正在學習def 函式以及lambda 函式。
您可以在下面找到兩者的組合,但我不知道它實際上是如何作業的以及流程是什么。
我不明白它是如何作業的代碼如下:
def func(x):
return lambda y: (x y 1)
def func1(x):
return lambda y : (func(x)(x) y 1)
print(func1(3)(1))
回傳值為:
9
uj5u.com熱心網友回復:
def func(x):
return lambda y: (x y 1)
def func1(x):
return lambda y : (func(x)(x) y 1)
print(func1(3)(1))
中的函式python是一等公民,因此您可以創建return函式。兩個 defs中都使用了此功能。請注意,呼叫如下所示
func(x)(x)
func1(3)(1)
作為第一部分 ( func(x)and func1(3))return的函式,然后使用單個引數 ( xand 1)呼叫
uj5u.com熱心網友回復:
這是有目的的復雜代碼,你不會在現實生活中看到這樣的代碼。如果你這樣做了,那么就盡快逃離那個公司或專案。根據您的理解,請嘗試以與擴展數學公式相同的方式擴展函式呼叫。如果你了解 lambda 是什么,那么一步一步擴展這個應該很容易。
所以我們要評估這個func1(3)(1)。讓我們逐步深入了解它。
Step1:讓我們從第一部分開始:
func1(3)==>在lambda y: (func(x)(x) y 1)哪里==>x3lambda y: (func(3)(3) y 1)
Step2:讓我們看一下這部分:
func(3)==>在lambda y: (x y 1)哪里==>x3lambda y: (3 y 1)
Step3:現在讓我們更進一步:
func(3)(3)==>在(3 y 1)哪里==> ==>y33 3 17
第 4 步:現在讓我們回到第 1 步的結果:
lambda y: (func(3)(3) y 1)==>lambda y: (7 y 1)
第5步:現在讓我們把這些放在一起:
func1(3)(1)==>在(7 y 1)哪里==>y19
uj5u.com熱心網友回復:
我會盡力。
我正在試驗代碼并使用第一個函式做一些事情,它看起來像這樣:
def func(x):
return lambda y: (x y 1)
print(func(3)(1))
有趣的部分是您實際上可以將 lambda 值放在函式值旁邊,因此 lambda 值將為 1,函式值為 3,那么結果將是:
3 1 1 = 5
現在是我花了很長時間才能完全理解它的困難部分,因為它很棘手。
def func(x):
return lambda y: (x y 2)
print(func(3)(1))
def func1(x):
return lambda y : (func(x)(x) y 1)
print(func1(4)(1))
我在這段代碼中看到了一些棘手的問題,例如:
4 4 1 1 = 10
就像另一個值在哪里得到數字為 12,這就是它從上面的函式中獲取的值是 2 放入函式中,結果將是:
4 4 1 1 2 = 12
這就是我所知道的。
現在我的大腦很熱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/483326.html
上一篇:從C中的函式回傳STR的問題
下一篇:如何解決應用程式的def函式問題
