我有一个问题,关于如何使用内部函数的返回结果作为外部函数的参数。
我尝试了下面的代码,但结果不是我所期望的:
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
(像所有函数一样)只能返回一个值,但您正试图同时返回 inner_function
和 outer_result
。第一个 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 = a * b * c * 100
return inner_result
return inner_function
some_func = outer_function(10,9)
print(some_func(9))
我希望你现在可以很容易地理解它。