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

zvms9eto  于 2023-05-21  发布在  Python
关注(0)|答案(3)|浏览(222)

我有一个关于如何使用内部函数的返回结果作为外部函数的参数的问题。
我尝试了以下代码,但结果不是我所期望的:

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
我想知道我做错了什么,以及如何在outer_function中使用inner_result作为参数?

u5rb5r59

u5rb5r591#

当您在第5行返回inner_function时。函数结束了,所以第6行和第7行没有被执行。

qyuhtwio

qyuhtwio2#

outer_function(像所有函数一样)只能返回一个值,但您试图同时返回inner_functionouter_result。第一个return结束函数,导致错误行为。
如果您不想将outer_result计算合并到inner_function中(我会这样做),您可以将其 Package 在执行计算的另一个函数中。这可以通过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中,除非出于概念上的原因,您确实希望将其分开。

lzfw57am

lzfw57am3#

我给你一个简单的方法,在代码中做了一些小的调整:

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

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

相关问题