我正在尝试按不同顺序进行打印和返回功能。为什么代码中的顺序会更改输出?
这是我的第一篇文章,因此如果措辞不当,我深表歉意。
我在(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
为什么?
答案 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 被封装在函数内部,但它不属于将要执行的指令的一部分。