首页 > 解决方案 > 在python中调用封闭函数

问题描述

在使用封闭函数的方式中,当我使用调用方法时它不起作用。

def foo():
    x = 20
    def bar():
        return x
    bar()

在这里,当我调用 foo() 时,它返回 None。当我在 foo 中使用“return bar”而不是“bar()”时,它在调用 foo()() 时效果很好,那么为什么 return 在封闭函数中不起作用但 print 起作用?

标签: pythonpython-3.x

解决方案


foo()不返回 的值bar(),因为您没有将它作为返回值从foo().

def foo():
    x = 20
    def bar():
        return x
    bar()

    # No return value for foo, this equals return None
    return None

res = foo()
type(res)
# NoneType

如果你想传播bar()via的返回值foo(),你需要使用return它:

def foo():
    x = 20
    def bar():
        return x

    return bar()

res = foo()
x
# 20

推荐阅读