print"和"return"之间的正式区别是什么?
假设我定义了一个简单的函数,它会显示传给它的一个整数:
def funct1(param1):
print(param1)
return(param1)
输出结果是一样的,但我知道当在函数中使用了return
语句时,输出的结果可以再次使用。否则,print
语句的值就不能再用了。不过我知道这并不是正式的定义,有人能给我一个好的定义吗?
6 个回答
这是一个简单的例子,用来展示两者之间的区别:
def foo():
print (5)
def bar():
return 7
x = foo()
y = bar()
print (x)
# will show "None" because foo() does not return a value
print (y)
# will show "7" because "7" was output from the bar() function by the return statement.
使用 print()
这个命令,你可以把 param1
的值显示出来,直接在屏幕上看到。而使用 return
命令,则是把 param1
的值传递给调用这个函数的地方。
这两种写法的意思完全不同,所以你不会看到相同的效果。如果你把整个程序发出来,我可以更容易地帮你指出它们的区别。
补充:正如其他人提到的,如果你在一个交互式的 Python 环境中,你会看到相同的效果(值会被打印出来),但这是因为这个环境会计算表达式并显示结果。
在这种情况下,带有 return
的函数会被当作 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
会把它的参数/表达式输出到标准输出,所以在我写的这些函数里,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
这里有关于函数的内容,来自Python的教程: http://docs.python.org/tutorial/controlflow.html#defining-functions
这个例子像往常一样,展示了一些新的Python特性:
返回语句可以从函数中返回一个值。如果没有表达式参数的
return
,则返回None
。函数结束时也会返回None
。