为什么打印和返回代码块的顺序会影响返回

时间:2019-05-22 12:26:42

标签: python printing return

我正在尝试按不同顺序进行打印和返回功能。为什么代码中的顺序会更改输出?

这是我的第一篇文章,因此如果措辞不当,我深表歉意。

我在(3)中所示的较长代码段中的第一个代码包含:

def function_that_prints():
     print ("I printed")
    return ("I printed")
def function_that_returns():
    return ("I returned")

f1 = function_that_prints()
f2 = function_that_returns()

print (f1)
print (f2)

结果:

I printed
I printed
I returned

但是当您反转它们时,它会改变。见下文。

def function_that_prints():
    return ("I printed")
    print ("I printed")

def function_that_returns():
    return ("I returned")

f1 = function_that_prints()
f2 = function_that_returns()

print (f1)
print (f2)

结果:

I printed
I returned

预期结果:

I printed
I printed
I returned

为什么?

4 个答案:

答案 0 :(得分:4)

当您在函数中到达return时,您将退出该函数,在return调用之后的所有操作将永远不会执行。

答案 1 :(得分:1)

您可以在函数function_that_prints的第二个示例中看到,带有退货的行位于要打印的行之前。在Python和其他大多数语言中,函数将在返回时结束。如此简单,返回之后的行将永远不会执行。如果要在函数内部打印function_that_prints,则必须像在第一个示例中那样在返回之前发生。

很抱歉缺少格式。当我回到笔记本电脑时,我可以改善这个答案。

答案 2 :(得分:1)

示例1

def function_that_prints():
     print ("I printed") # Line 1
    return ("I printed") # Line 2

def function_that_returns():
    return ("I returned") # Line 3

f1 = function_that_prints() # Will print line 1 and store returned value in f1 and doesn't print line 2 string
f2 = function_that_returns() # Doesn't print, but stores return string in f2

# Prints both the returned values
print (f1) 
print (f2)

示例2

def function_that_prints():
    return ("I printed") # Line 1
    print ("I printed") # Line 2

def function_that_returns():
    return ("I returned") # Line 3

f1 = function_that_prints() # Line 2 is never excecuted as function returns in line 1 and the returned string is stored in f1
f2 = function_that_returns() # Will just return the string from line 3 and store in f2

# Prints the returned strings
print (f1)
print (f2)

答案 3 :(得分:0)

当您告诉某个函数返回某项内容时,您基本上是在问出该函数,除非您得到 if else 语句。现在,当您在返回之后说在函数内部返回时,您的 print 被封装在函数内部,但它不属于将要执行的指令的一部分。