Python-如何在函数中返回工作

时间:2016-01-16 14:42:37

标签: python function

我对使用python中的函数感到困惑。

假设我有这段代码

def calculate(a):
    a = int(a)
    return a  # or yield a

然后我写作

def _convert(a):
    a = int(a)
    return a # or yield a+1

def calculate(a):
    _convert(a)  # is this correct or i need (return _convert(a))

-     内部返回功能是否一直持续到最后?

3 个答案:

答案 0 :(得分:3)

没有。每个函数都需要返回自己的值。

def calculate(a):
    return _convert(a)

现在,calculate获取_convert返回的值并将其返回给调用者。

在某些语言中,在没有显式return语句的情况下,函数的返回值是最后一个语句的值。例如,在Perl中,

sub foo {
    return 3;
}

sub bar {
    foo();
}

bar的返回值为3,因为执行的最后一个语句是foo,其返回值为3.

但是,Python不能以这种方式工作。在Python中,函数隐式返回None,除非您使用return语句返回不同的值。

答案 1 :(得分:2)

return语句允许您确定函数调用在表达式中的值。如果一个函数调用另一个函数,则第二个函数会向第一个函数返回一个值。

因此,在第二个示例中,为了使calculate向其调用者返回一个值,它必须确实使用return语句,因此return _convert(a)确实是正确的。

这些答案可以通过在交互式口译员中运行来轻松确定,我经常鼓励初学者将其用于此目的。

答案 2 :(得分:0)

您可能会感到困惑,因为int(a)行没有增加a;它只是试图强迫它成为一个整数。

另一方面,请记住,每个没有"返回"表现得像是返回None,所以

def calculate(a): _convert(a)

表现得像

def calculate(a): _convert(a) return None

所以如果你想返回转换后的值,那么你需要显式地返回_convert(a),就像你建议的那样:

def calculate(a): return _convert(a)

实际上就像你自己调用第一个函数一样。