如何使用内部函数的返回结果作为外部函数的参数?

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 中,除非出于概念原因您确实希望将其分开。