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

问题描述 投票:0回答:3

我有一个问题,关于如何使用内部函数的返回结果作为外部函数的参数。

我尝试了下面的代码,但结果不是我所期望的:

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
中的参数?

python function closures
3个回答
1
投票

当您在第 5 行返回 inner_function 时。函数结束,因此第 6 行和第 7 行没有执行。


0
投票

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
中,除非出于概念原因你真的想把它分开。


0
投票

通过对代码进行一些小调整,我为您提供了简单的方法:

    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))

我希望你现在可以很容易地理解它。

© www.soinside.com 2019 - 2024. All rights reserved.