def、参数与 return · Python 从零开始
怎样做出自己的、可以重复使用的工具:给它输入,它还你结果?
课程目录为什么需要它
在机器人课里,你用 def 给一组指令起了名字。真正的函数更进一步:它接收参数 Parameter(输入),返回 Return 一个值(输出),就像 len("abc") 接收一个字符串、返回 3。函数让你能单独测试每一块、反复使用,也让程序更好读。
直觉理解
函数就像一台小机器:东西放进去,结果拿出来。
def area(width, height):
return width * height
print(area(3, 4))width和height是参数 Parameter:输入的名字。- 在
area(3, 4)里,3 和 4 是实参 Argument:实际传进去的值。 return把一个值送回调用的地方,并结束函数。area(3, 4)就变成了 12。
print 只是把值显示在屏幕上;return 是把值交回去,让程序继续使用。没有 return 的函数返回 None。
定义
参数与实参 Parameter / Argument
A parameter is a variable named in a function definition; an argument is the value passed to it when the function is called.参数是函数定义里写的变量名;实参是调用函数时传给它的值。
返回值 Return value
The return statement ends a function and sends a value back to the caller; without it the function returns None.return 语句结束函数并把一个值送回调用处;没有 return 的函数返回 None。
示例
有返回值的函数
动手试试点一下 trace,看程序怎么跳转。
def area(width, height):
return width * height
total = area(3, 4) + area(2, 5)
print(total)逐步执行
- L1定义 area,还没有运行。
- L4调用 area(3, 4):width = 3,height = 4。
width = 3, height = 4 - L2返回 12,area(3, 4) 就变成了 12。
→ 12 - L4调用 area(2, 5) → 10;12 + 10 = 22。
total = 22 - L5打印 22。
22
print 不等于 return
动手试试shout 只打印、不返回,所以 result 是 None。
def shout(word):
print(word.upper())
def louder(word):
return word.upper() + "!"
result = shout("hi")
print(result)
print(louder("hi"))逐步执行
- L7shout 打印了 HI,但没有 return……
HI - L8……所以 result 是 None。
None - L9louder 返回 "HI!",再由 print 显示出来。
HI!
常见错误
该 return 却写了 print
如果别的代码要用这个结果,就要 return。只会打印的函数没法参与计算。
return 后面的代码
return 会立即结束函数;同一代码块里写在它后面的行永远不会运行。
小测验
1. 这段代码会输出什么?
def f(x):
return x * 2
print(f(3) + f(1))查看答案
答案:A
f(3) 是 6,f(1) 是 2;6 + 2 = 8。
2. 这段代码会输出什么?
def g():
print("hi")
result = g()
print(result)查看答案
答案:A
g 打印了 hi,但没有返回任何东西,所以 result 是 None。
动手练习
3 道练习,分三层:先预测程序的输出,再按新需求改程序,最后从零写一个。代码在浏览器里运行,提交马上判题。
- 预测输出值的副本
准确写出程序的输出。
- 改需求要 return,不要 print
square只是把结果打印出来,所以square(4) + 1会出错。改成 return n × n。 - 从零写偶数小工具
写两个函数。
is_even(n):n 是偶数就返回 True,否则返回 False。count_even(nums):返回列表里有几个偶数,而且要用到is_even。
本课术语
| 术语 | 中文 | 英文定义 |
|---|---|---|
| Parameter | 参数 | A name in a function definition that receives a value when the function is called. |
| Argument | 实参 | The actual value passed to a function in a call. |
| return | return 返回 | The statement that ends a function and sends a value back to the caller. |
| None | None 空值 | The value a function gives back when it has no return statement. |