如何使用内部函数的返回结果作为外部函数的参数?
How to use returned result from inner function as a parameter in the outer function?
我有一个关于如何使用内部函数的返回结果作为外部函数的参数的问题。
我尝试了以下代码,但结果不是我所期望的:
def outer_function(a,b):
def inner_function(c):
inner_result = c * 100
return inner_result
return inner_function
outer_result = a * b * inner_result
return outer_result
some_func = outer_function(10,9)
some_func(9)
我预计 some_func(9)
的结果为 9 * 100 * 10 * 9 = 81000
;相反,结果是 900
.
我想知道我做错了什么以及如何使用 inner_result
作为 outer_function
中的参数?
当您在第 5 行返回 inner_function 时。函数结束,因此第 6 行和第 7 行没有执行。
outer_function
(像所有函数一样)只能 return 单个值,但您正试图 return inner_function
和 [=14] =].第一个 return
结束函数,导致错误行为。
如果您不想将 outer_result
计算合并到 inner_function
中(我会这样做),您可以将其包装在另一个执行计算的函数中。这可以通过 lambda
或另一个完整的 def
:
来完成
def outer_function(a,b):
def inner_function(c):
inner_result = c * 100
return inner_result
return lambda c: a * b * inner_function(c)
或
def outer_function(a,b):
def inner_function(c):
inner_result = c * 100
return inner_result
def second_inner_function(d):
return a * b * inner_function(d)
return second_inner_function
尽管如此,a * b *
计算应该只添加到 inner_function
中,除非出于概念原因您确实希望将其分开。
我有一个关于如何使用内部函数的返回结果作为外部函数的参数的问题。
我尝试了以下代码,但结果不是我所期望的:
def outer_function(a,b):
def inner_function(c):
inner_result = c * 100
return inner_result
return inner_function
outer_result = a * b * inner_result
return outer_result
some_func = outer_function(10,9)
some_func(9)
我预计 some_func(9)
的结果为 9 * 100 * 10 * 9 = 81000
;相反,结果是 900
.
我想知道我做错了什么以及如何使用 inner_result
作为 outer_function
中的参数?
当您在第 5 行返回 inner_function 时。函数结束,因此第 6 行和第 7 行没有执行。
outer_function
(像所有函数一样)只能 return 单个值,但您正试图 return inner_function
和 [=14] =].第一个 return
结束函数,导致错误行为。
如果您不想将 outer_result
计算合并到 inner_function
中(我会这样做),您可以将其包装在另一个执行计算的函数中。这可以通过 lambda
或另一个完整的 def
:
def outer_function(a,b):
def inner_function(c):
inner_result = c * 100
return inner_result
return lambda c: a * b * inner_function(c)
或
def outer_function(a,b):
def inner_function(c):
inner_result = c * 100
return inner_result
def second_inner_function(d):
return a * b * inner_function(d)
return second_inner_function
尽管如此,a * b *
计算应该只添加到 inner_function
中,除非出于概念原因您确实希望将其分开。