2

我认为我对函数的工作原理以及如何将它们分配给变量有一个不错的理解。然而,我只是在查看几个月前阅读的一些“艰难地学习 Python”练习(最值得注意的是练习 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

变量赋值看起来像它调用函数并输出打印语句而不是返回值......但变量本身显示值 35,为什么变量赋值不做同样的事情?

我希望这些问题是有意义的。我只是想更好地了解幕后发生的事情。如果有人有任何户外阅读,请告诉我!

4

3 回答 3

6

这是因为交互式解释器会显示您键入的任何表达式的返回值。

您发布的功能有两行。在第一行,它print()是标准输出的值。第二个return函数的值相同。正如我上面所说,这也被写入交互式解释器的标准输出中。

如果您要通过命令行运行脚本(即不在交互式解释器中:

python myscript.py

您会注意到此返回值不再打印到标准输出。

于 2012-06-09T02:48:23.617 回答
1

您在交互式 Python 提示符下执行此操作,为方便起见,它始终打印最后一个结果,而无需您要求它这样做。否则,您必须一直在打字print,这会很快变老。

在适当的脚本中,Python 不会这样做。

于 2012-06-09T02:49:46.237 回答
0

添加两个打印件见:print "ADDING %d + %d" % (a, b) 并返回整数(仅整数)见:return a + b

它总是打印“ ADDING x + y ”,不管你想不想。

如果将函数分配给变量,让 cal 它var,那么var将只有整数,仅此而已(这就是 add 返回的内容)。

于 2012-06-09T02:25:23.767 回答