我正在做作业,我对“打印”和“返回”感到困惑。
例如,当我要求创建一个返回(“a”,“e”,“i”,“o”,“u”)中所有字母的函数时,为什么输出时不会出现只是把我的def函数(例如all_letters(“你好我的妻子”)?但是当我输出“打印字母”时会有输出?
答案 0 :(得分:4)
使用return
,您可以分配给变量:
def my_funct(x):
return x+1
然后你可以y = my_funct(5)
。 y
现在等于6。
为了帮助描述它,可以将函数视为一台机器(类似于它们在某些数学类中使用的函数)。通过插入变量(在本例中为x
),函数输出(或returns
)某些东西(在本例中为x+1
)。变量是输入,return
给出输出。
但是,对于print
,该值只会显示在屏幕上。
如果您将功能更改为:
def my_funct(x):
print(x+1)
然后y = my_funct(x)
,y
等于None
,因为print()
不会返回任何内容。
使用机器比喻,你插入变量(再次,x
),但不是输出某些内容,而是只显示它等于的内容(同样,x+1
)。但是,它不会输出任何内容。
答案 1 :(得分:3)
return
向调用范围返回一个值。 print
(除非有人做了一些猴子补丁)将数据推送到stdout。随后可以从调用范围使用返回值,而打印的内容将被分派到操作系统,操作系统会相应地处理它。
>>> def printer(x):
... print x * 2
...
>>> def returner(x):
... return x * 2
...
>>> printer(2)
4
>>> y = printer(2)
4
>>> y is None
True
>>> returner(2)
4
>>> y = returner(2)
>>> y
4
交互式控制台对于说明这一点有点误导,因为它只打印了返回值的字符串表示,但上面示例中分配给y
的值的差异是说明性的。分配y
的结果时,None
为printer
,因为对于没有明确返回值的任何函数,存在隐式return None
。
答案 2 :(得分:2)
return
是一个关键字,而print
是一个函数:
return
非常有用。
print
只允许您在命令提示符中打印一些文本:
def foo():
return 2
bar = foo() # now bar == 2
print(bar) # prints 2