【问题标题】:Outputs: functions vs. functions assigned to variables输出:函数与分配给变量的函数
【发布时间】:2012-06-13 01:07:37
【问题描述】:

我认为我对函数的工作原理以及如何将它们分配给变量有相当的了解。但是,我只是在查看几个月前阅读的一些 Learn Python the 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

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

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

【问题讨论】:

    标签: python function variable-assignment function-calls


    【解决方案1】:

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

    您发布的功能有两行。在第一行,它将print()s 的值发送到标准输出。第二个returns 与函数中的值相同。正如我上面所说,这也会被写入 interactive 解释器的标准输出中。

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

    python myscript.py
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 说它“打印最后一个结果”有点误导,因为解释器将输出不计算为Noneall 表达式的返回值,不只是最后一个打字。例如:>>> for i in range(10):\n... i + 10\n... i + 5\n.
      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-19
        相关资源
        最近更新 更多