学习python艰苦的方式练习21:打印vs返回

时间:2014-02-02 20:40:13

标签: python return

我正在试图弄清楚发生了什么,我真的被卡住了:

def add(a,b):
    print "ADDING %d + %d" % (a,b)
    return a+b

def subtract(a,b):
    print "SUBTRACTING %d - %d" %(a,b)
    return a-b

def multiply (a,b):
    print "MULTIPLYING %d * %d" %(a,b)
    return a*b

def divide (a,b):
    print "DIVIDING %d / %d" % (a,b)
    return a/b


print "Let's do some math with just functions!"

age = add(30,5) # state A
height = subtract (78,4) # state A
weight = multiply (90, 2) # state A
iq = divide (100, 2) # state A

print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq) # state B

我无法理解为什么在状态A中结果是函数的第二行,其中有打印,而在状态B中,结果是函数的真实输出,我认为这是通过返回完成的。

如果术语不是很准确,请道歉。

由于

2 个答案:

答案 0 :(得分:1)

一步一步走。

在这一行:

age = add(30,5) # state A

由于()和函数被调用之前的名称。参数305被放入参数ab的实际值中,执行进入此代码:

def add(a,b):
    print "ADDING %d + %d" % (a,b)
    return a+b

第一行打印"ADDING %d + %d" % (a,b)a30b5。然后评估并返回表达式a+b。这导致行:

age = add(30,5) # state A

要“改变”(只是在概念上 - 你可以考虑这个,当然它并没有改变):

age = 35 # state A

只是将值35分配给变量age。下一行# state A行也是一样的。

在最后一行:

print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)

函数调用的结果已经记在变量ageheight等中。此时您可能会忘记有关函数addsubtract等的所有内容。所以这里解释器只调用%运算符的内部实现,它将(age, height, weight, iq)的值放在字符串中相应的%d位置,并将结果打印到控制台。

答案 1 :(得分:0)

我也在学习python。值得注意的是,返回是函数评估给定一组参数并且可以再次重用(即设置为变量),而print只是在控制台中显示输出