我认为我对函数如何工作以及如何将它们分配给变量有了一个很好的理解。然而,我刚刚看了几个月前读过的一些学习Python的Hard Way练习(最值得注意的是练习21),并注意到有关解释器输出的一些有趣的事情。
def add(a, b):
print "ADDING %d + %d" % (a, b)
return a + b
输出:
>>> add(30, 5)
ADDING 30 + 5
35
为什么这会显示35?难道你不应该写“print add(30,5)”来显示返回值吗?
>>> age = add(30, 5)
ADDING 30 + 5
>>> age
35
变量赋值看起来像调用函数并输出print语句而不是返回值...但变量本身显示值35,为什么变量赋值不一样?
我希望这些问题有意义。我只是想更好地了解幕后发生的事情。如果有人有外读,请告诉我!
答案 0 :(得分:5)
这是因为交互式解释器显示您键入的任何表达式的返回值。
您发布的功能有两行。在第一行中,print()
是标准输出的值。第二个return
与函数的值相同。如上所述,这也会被写入交互式解释器中的标准输出。
如果您要通过命令行运行脚本(即交互式解释器中的不是:
python myscript.py
您会注意到此返回值不再打印到标准输出。
答案 1 :(得分:1)
您正在交互式Python提示中执行此操作,为方便起见,始终打印最后一个结果,而不要求您这样做。否则,你必须一直输入print
,这会很快变老。
在正确的脚本中,Python不会这样做。
答案 2 :(得分:0)
添加这两张照片见:print "ADDING %d + %d" % (a, b)
并返回整数(仅整数),请参阅:return a + b
它总是打印“添加x + y ”,是否需要。
如果您将函数分配给变量,让我们将其设置为 var ,那么 var 将具有整数,而不是更多(这是添加返回的< /强>)。