我正在试图弄清楚发生了什么,我真的被卡住了:
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中,结果是函数的真实输出,我认为这是通过返回完成的。
如果术语不是很准确,请道歉。
由于
答案 0 :(得分:1)
一步一步走。
在这一行:
age = add(30,5) # state A
由于()
和函数被调用之前的名称。参数30
和5
被放入参数a
和b
的实际值中,执行进入此代码:
def add(a,b):
print "ADDING %d + %d" % (a,b)
return a+b
第一行打印"ADDING %d + %d" % (a,b)
,a
为30
,b
为5
。然后评估并返回表达式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)
函数调用的结果已经记在变量age
,height
等中。此时您可能会忘记有关函数add
,subtract
等的所有内容。所以这里解释器只调用%
运算符的内部实现,它将(age, height, weight, iq)
的值放在字符串中相应的%d
位置,并将结果打印到控制台。
答案 1 :(得分:0)
我也在学习python。值得注意的是,返回是函数评估给定一组参数并且可以再次重用(即设置为变量),而print只是在控制台中显示输出