Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “函数内部”;更大的();,它返回了一个值——a或b。那么,为什么还需要;return";s在“之前”;更大的();函数中的“s”;中位数();?_Python_Return - Fatal编程技术网

Python “函数内部”;更大的();,它返回了一个值——a或b。那么,为什么还需要;return";s在“之前”;更大的();函数中的“s”;中位数();?

Python “函数内部”;更大的();,它返回了一个值——a或b。那么,为什么还需要;return";s在“之前”;更大的();函数中的“s”;中位数();?,python,return,Python,Return,在函数“biger()”中,它返回了一个值——a或b。 那么,为什么在函数“median()”中的“biger()”之前还需要“return”呢? 代码如下: def bigger(a,b): if a > b: return a else: return b def biggest(a,b,c): return bigger(a,bigger(b,c)) def median(a,b,c): if a == big

在函数“biger()”中,它返回了一个值——a或b。 那么,为什么在函数“median()”中的“biger()”之前还需要“return”呢? 代码如下:

def bigger(a,b):
    if a > b:
        return a
    else:
        return b

def biggest(a,b,c):
    return bigger(a,bigger(b,c))

def median(a,b,c):   
    if a == biggest(a,b,c):
        return bigger(b,c)     #the function "bigger()" above has returned a value,
                           #so, why still need a 'return' before bigger(b,c)?
    elif b == biggest(a,b,c):
        return bigger(a,c)
    else:
        return bigger(a,b)

函数调用是一个表达式。考虑以下事项:

def add(a, b):
    a + b

x = add(3, 5)
您是否希望
x
现在具有值
8
?您不应该这样做,因为
add
没有返回表达式
a+b
的值。正确的定义是

def add(a, b):
    return a+b

现在考虑这个函数:

def backwards_add(a, b):
    add(b, a)

x = backwards_add(3, 5)
同样,您是否希望
x
的值为
8
?同样,您不应该这样做,因为
backwards\u add
没有返回表达式
add(b,a)
的值。正确的定义是

def backwards_add(a, b):
    return add(b, a)
有些语言隐式返回函数中执行的最后一个表达式的值(参见Perl)


),但Python不是这些语言之一。您必须显式返回一个值,否则它将为您返回
None

我将尝试用示例进行解释,可能更简单一些

您已经定义了
biger
函数,它返回一个值,对吗

def bigger(a,b):
    if a > b:
        return a
    else:
        return b
现在,您已经定义了一个
最大的
函数,并且正在从该函数调用
更大的

def biggest(a,b,c):
    return bigger(a,bigger(b,c))
现在想象一下,你可以用
biger
返回的值做成千上万的事情

您可以使用
biger
函数中任何位置的返回值。例如:

def biggest(a,b,c):
    some_var = bigger(a,bigger(b,c))
    return some_var + 10


但是,当您希望在调用
最大值
的函数中使用从
biger
返回的值时,您应该再次返回该值,以便
最大值
的调用方获得该值。否则,它将得到
None
,这基本上告诉调用者“没有返回值”。

因为每个函数都将值返回给调用者。调用者可以随意使用该值执行任何操作,包括将其返回给调用者。
def biggest(a,b,c):
    some_var = bigger(a,bigger(b,c))
    return some_var + 10
def biggest(a,b,c):
    list_of_values = []
    list_of_values.append(bigger(a,bigger(b,c)))