外部函数内部的function()与return function()

时间:2018-08-21 11:21:26

标签: python function

id and deleted

有人可以解释other_func和other_func2有什么区别吗? 我在一个代码中看到了这一点,但不确定这两个函数之间有什么区别。

5 个答案:

答案 0 :(得分:2)

此功能

def other_func():
    return print_func()

返回print_func()

的结果

这个

def other_func2():
    print_func()

总是返回None,因为其定义不包含return语句。

不幸的是,此示例不相关。由于print_func()也没有return语句,因此它总是返回None。因此,other_func()将始终返回None ...

请考虑以下示例,以更好地理解函数定义和返回值:

def funcNoReturn():
    print("funcNoReturn() always return None!")

def funcA():
    # Returns an int value
    return 42 + 100

def funcB():
    return "a string value..."

print(funcNoReturn())
print(funcA())
print(funcB())

执行后,输出为:

funcNoReturn() always return None!
None
142
a string value...

答案 1 :(得分:0)

也许这个例子可以为您提供帮助:

def print_func():
    print("Hello, how you doin'?")
    return "printed"


def other_func():
    return print_func()

def other_func2():
    print_func()

if __name__ == "__main__":
    s1 = other_func()
    s2 = other_func2()
    print(s1)
    print(s2)

问题是other_func返回的值可以存储在s1中。而other_func2不返回任何内容。为了向您展示我在print_func()中添加了return语句。

答案 2 :(得分:0)

other_func 返回print_func()返回的值。由于return中没有明确的print_func()指令,因此它将返回默认值None。因此,other_func在执行None之后返回print_func()

在执行print_func()之后,

other_func2 返回None(默认返回值)。

因此,两者最终都在做同样的事情。但是,由于指令return print_func()知道print_func()没有返回指令,因此 other_func 可能会使读者感到困惑。

答案 3 :(得分:0)

在此设置中配置的所有功能均返回None

这是函数的默认返回值,如果未指定return,则返回该值。

您的other_func()返回print_func()的返回值。假设您没有为print_func()指定任何返回值,它将返回None并使other_func()也返回None

如果您为print_func()指定了任何返回值,则返回值将由other_func()拾取,而不会由other_func2()拾取。

答案 4 :(得分:0)

python 必须中的函数必须返回某些内容(除非它们引发异常)。因此,所有python函数都有一个隐式return None及其代码的结尾

def fun():
   #<your code>
   return None

如此

def f():
   pass

v = f()  # v is None

您的函数实际上对python解释器来说是这样的

def print_func():
    print("Hello, how you doin'?")
    return None

def other_func():
    return print_func()  # === return None
    return None  # never encountered

def other_func2():
    print_func()
    return None

因此,只要print_func返回None,两者都会做完全相同的事情。如果将print_func定义为

def print_func():
    print("Hello, how you doin'?")
    return 0

然后other_func现在将返回0,而other_func2仍将返回None