bma*_*ay2 1 python function function-calls variable-assignment
我认为我对函数如何工作以及如何将它们分配给变量有了一个很好的理解.然而,我刚刚看了几个月前读过的一些学习Python的Hard Way练习(最值得注意的是练习21),并注意到一些关于解释器输出的有趣的事情.
def add(a, b):
print "ADDING %d + %d" % (a, b)
return a + b
Run Code Online (Sandbox Code Playgroud)
输出:
>>> add(30, 5)
ADDING 30 + 5
35
Run Code Online (Sandbox Code Playgroud)
为什么这显示35?难道你不应该写"print add(30,5)"来显示返回值吗?
>>> age = add(30, 5)
ADDING 30 + 5
>>> age
35
Run Code Online (Sandbox Code Playgroud)
变量赋值看起来像调用函数并输出print语句而不是返回值...但变量本身显示值35,为什么变量赋值不一样?
我希望这些问题有意义.我只是想更好地了解幕后发生的事情.如果有人有外读,请告诉我!
这是因为交互式解释器显示您键入的任何表达式的返回值.
您发布的功能有两行.在第一行中,它print()是标准输出的值.第二个return是与函数相同的值.如上所述,这也会被写入交互式解释器中的标准输出.
如果您要通过命令行运行脚本(即不在交互式解释器中运行:
python myscript.py
Run Code Online (Sandbox Code Playgroud)
您会注意到此返回值不再打印到标准输出.