跟着NOAI考纲学Python,学完就能考,第8课
每天一个知识点,带你自学NOAI,加入我们吧~
前面写的代码,用一次写一次。但如果同一段代码要用好多次呢?总不能复制粘贴十遍吧。这节课学函数——把一段代码打包起来,取个名字,以后一句话就能调用。
定义函数
用 def 关键字定义一个函数:
def say_hello(): |
你好!
你好!
拆开看:
• def say_hello(): — 定义一个叫 say_hello 的函数,冒号结尾
• 下面缩进的代码是函数的函数体,定义的时候不会执行
• say_hello() — 调用函数,加括号才会执行
定义函数 = 写好菜谱,调用函数 = 按菜谱做菜。写菜谱的时候不会做菜,你喊一声"做!"才动手。
给函数传参数
函数可以接收参数,这样每次调用可以传不同的值:
def say_hello(name): |
你好,小明!
你好,小红!
括号里的 name 就是参数。调用的时候传了 "小明",函数里的 name 就等于 "小明"。
参数可以有多个,用逗号隔开:
def add(a, b): |
8
30
返回值
上面的函数用 print 把结果直接打印出来了。但很多时候,你想让函数把结果交回来,自己再拿去用。这时候用 return:
def add(a, b): |
8
31
拆开看:
• return a + b — 函数算完 a + b,把结果交回去
• result = add(3, 5) — 调用函数,返回值存到 result 里
• add(10, 20) + 1 — 返回值可以直接拿来运算,30 + 1 = 31
print 是把东西显示在屏幕上给你看。return 是把东西交回给程序,程序还能接着用。
return 会立刻结束函数
函数执行到 return 就停了,后面的代码不会执行:
def check(score): |
及格
不及格
传入80,score >= 60 成立,执行 return "及格",函数立刻结束,下面的 return "不及格" 不会执行。传入45,条件不成立,跳过第一个return,执行第二个。
组合起来用
函数可以调用函数,也可以和循环、列表配合。看一个实际的例子——算全班平均分:
def average(numbers): |
平均分: 82.0
把"算平均分"这个逻辑打包成函数后,不管是语文成绩、数学成绩还是别的列表,都可以一句 average(列表) 搞定。
易错点
1. 定义了不调用,什么都不会发生
def say_hello(): |
定义函数只是"写好菜谱",你不喊 say_hello(),它不会自己执行。
2. 调用时忘加括号
print(add) # 输出的是函数本身,不是计算结果 |
3. 搞混 print 和 return
def add_wrong(a, b): |
8
None
函数里用了 print 而不是 return,所以屏幕上确实显示了8,但 result 拿到的是 None(什么都没有)。想把结果交回来,必须用 return。
动手试试
自己先想,想完了去香农平台上写代码跑一遍验证。
|
练习1:预测输出 下面这段代码运行后,屏幕上会输出什么?
提示:return 把结果交回来,交回来的值可以直接参与运算。 |
|
练习2:找bug 下面这段代码想算长方形的面积,但运行后 result 的值是 None。哪里出了问题?
提示:回头看看"易错点"第3条。 |
|
练习3:写代码 写一个函数 max_of_three(a, b, c),接收三个数字,返回其中最大的那个。然后调用它,打印结果。 提示:可以用 if 判断,也可以想想之前学的列表有没有什么方法能帮忙。 |
去平台上手写代码
学会函数,你的代码可以"复用"了。回顾一下:
• def 函数名(参数): — 定义函数
• 函数名(值) — 调用函数,括号不能少
• return — 把结果交回给程序,函数立刻结束
• print ≠ return — print是给你看的,return是给程序用的
这篇文章讲的是香农NOAI学习平台"Python基础"模块的第八课。平台上有更多的练习题,写完代码点运行,对不对立刻就知道。
香农NOAI学习平台
地址:shannon.arpa.school
微信扫码登录就能用,免费。
找到「Python基础」→「函数」,从第一道题开始写。
下一篇讲字典——用"名字:值"的方式存数据,比列表更灵活,查东西更方便。