我正在通过艰难的方式学习Python,并且在练习21中使用了return语句。在浏览代码时,我理解return语句正在做什么,但我完全没有得到Zed Shaw的描述。我想确保我没有错过任何东西。练习有这个代码
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)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)
print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)
# A puzzle for the extra credit, type it in anyway.
print "Here is a puzzle."
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
print "That becomes: ", what, "Can you do it by hand?"
Shaw描述了这样的返回声明:
- 我们的函数使用两个参数调用:a和b。
- 我们打印出我们的功能正在做什么,在这种情况下是“添加”。
- 然后我们告诉Python做一些向后的事情:我们返回一个+ b的加法。您 可能会这样说,“我添加a和b然后返回它们。”
- Python添加了两个数字。然后当函数结束时,任何运行它的行都会 能够将此a + b结果分配给变量。
醇>
在第三位,当他说“做一些落后的事情”并且它返回“a和b”时(当他说'他们'时),似乎他正在返回表达式,或者只是两个变量,而不是两者的数值解。我不确定它在说什么。
答案 0 :(得分:6)
本书中给出的第三步是不准确的(下面修改的单词用斜体字表示):
- 然后我们告诉Python做一些落后的事情:我们返回添加 a + b。你可能会这样说,“我添加一个和b然后返回他们。”
醇>
这样写得更好:
- 然后我们告诉Python做一些向后的事情:我们返回添加 a + b的结果。您可能会这样说,“我添加a和b然后返回结果。”
醇>
答案 1 :(得分:1)
return
语句告诉计算机采用下一个值,然后返回指向调用函数的位置。
例如,假设您有一个功能:
def foo():
return 5
然后你说:
x = foo()
然后你将x=5
。因为foo()
返回 5
。您可以将其视为代码主体中的foo()
表达式替换为return
所说的内容。
另一个例子:
def foo(a):
return 5+a
x = foo(3)
然后你有x=8
。