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

  • printAndReturnx返回给方法的调用者,所以:

    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度来看, printprint() )将不会做任何事情。 它不会以任何方式影响控制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