Python:Print和Return之间的正式区别是什么?
比方说,我定义了一个简单的函数,将显示一个整数传递给它:
def funct1(param1): print(param1) return(param1)
输出将是相同的,但我知道,当一个函数使用return语句时,输出可以再次使用。 否则,打印语句的值不能使用。 但是我知道这不是正式的定义,任何人都可以为我提供一个很好的定义。 谢谢
显着不同的东西。 想象一下,如果我有这个Python程序:
#!/usr/bin/env python def printAndReturnNothing(): x = "hello" print(x) def printAndReturn(): x = "hello" print(x) return x def main(): ret = printAndReturn() other = printAndReturnNothing() print("ret is: %s" % ret) print("other is: %s" % other) if __name__ == "__main__": main()
你期望什么是输出?
hello hello ret is : hello other is: None
为什么?
为什么? 因为print
接受它的参数/expression式,并将它们转储到标准输出,所以在我编写的函数中, print
将输出x
的值,这就是hello
。
-
printAndReturn
将x
返回给方法的调用者,所以:ret = printAndReturn()
ret
的值与x
相同,即"hello"
-
printAndReturnNothing
不返回任何东西,所以:other = printAndReturnNothing()
other
实际上变成None
因为这是从python函数的默认返回。 Python函数总是返回一些东西,但是如果没有声明return
,函数将返回None
。
资源
阅读python教程将向您介绍这些概念: http : //docs.python.org/tutorial
这里是关于函数forms的python的教程: http : //docs.python.org/tutorial/controlflow.html#defining-functions
像往常一样,这个例子演示了一些新的Python特性:
返回语句返回一个函数的值。 没有expression式参数的情况下返回None。 落在函数的末尾也会返回None。
使用print()
您将显示标准输出param1
的值,而return
您将发送param1
给调用者。
这两个陈述有一个非常不同的含义,你不应该看到相同的行为。 发布你的整个程序,它会更容易指出你的差异。
编辑:正如其他人指出的,如果你在一个交互式的python shell中,你会看到相同的效果(打印值),但是这是因为shell计算expression式并打印输出。
在这种情况下,具有return
语句的函数被作为return
自身的参数来计算,所以返回值被回显。 不要让交互式shell欺骗你! 🙂
如果您使用的是Python 3,则print
(或print()
)完全可以打印关键字后的所有内容。 它也会做很好的事情,比如自动将多个值连接起来:
print 1, '2', 'three' # 1 2 three
否则,从程序的angular度来看, print
( print()
)将不会做任何事情。 它不会以任何方式影响控制stream程,并且执行将会随着代码块中的下一条指令而恢复:
def foo(): print 'hello' print 'again' print 'and again'
另一方面, return
(not return()
)被devise为立即中断控制stream并退出当前函数,并返回一个指定的值给调用者,调用你的函数。 它将永远做到这一点,只是这一点。 return
本身不会导致任何东西被打印到屏幕上。 即使不指定返回值,也会返回隐式None
。 如果你完全忽略了一个return
,那么在你的函数结束时,隐式return None
仍然会发生:
def foo(y): print 'hello' return y + 1 print 'this place in code will never get reached :(' print foo(5) # hello # 6 def bar(): return # implicit return None print bar() is None # True def baz(y): x = y * 2 # implicit return None z = baz() print z is None # True
你看到return
ed值打印到屏幕上的原因是因为你可能在交互式Python shell中工作,为了方便你自动print
任何结果。
简单的例子来显示不同之处:
def foo(): print (5) def bar(): return 7 x = foo() y = bar() print (x) # will equal "None" because foo() does not return a value print (y) # will equal "7" because "7" was output from the bar() function by the return statement.
交互式terminal中的输出只是相同的。 正常执行程序时,结果将会完全不同。
我build议你阅读一本关于Python的书,或者阅读一个教你基本的教程,因为这是一个非常基本的东西。
我将从一个基本的解释开始。 打印只是向用户显示一个string,表示计算机内部正在进行的操作。 电脑无法使用该打印。 返回是一个函数如何返回一个值。 这个值通常是人类用户看不到的,但它可以被计算机用于其他function。
更广泛地说, 打印不会以任何方式影响function。 这仅仅是为了用户的利益。 这对于理解程序是如何工作是非常有用的,并且可以用于debugging以检查程序中的各种值而不中断程序。
返回是函数返回值的主要方式。 所有的函数都会返回一个值,如果没有return语句(或者yield但是不用担心),它会返回 None。 函数返回的值可以进一步用作传递给另一个函数的参数,作为variables存储,或者只是为了用户的利益而打印。
考虑这两个程序:
def function_that_prints(): print "I printed" def function_that_returns(): return "I returned" f1 = function_that_prints() f2 = function_that_returns() print "Now let us see what the values of f1 and f2 are" print f1 print f2