函数插画

写到现在,你一定发现:有些代码翻来覆去地写(比如算 BMI 的公式)。函数(function)就是"给一段代码起个名字",起完名随叫随到,再也不用复制粘贴。

一、函数:给代码起个名字

定义函数示意

def say_hello():          # def = define,"定义"一个叫 say_hello 的函数
    print("你好!")
    print("欢迎来到Python世界")

say_hello()               # 调用:名字后面加括号
say_hello()               # 想用几次就用几次
  • def 函数名(): 是"起名"环节,里面的代码不会立刻执行;
  • say_hello() 是"使用"环节,叫调用,这时代码才真正跑起来。

二、参数:函数的"输入口"

函数可以接收外面传进来的数据,叫参数:

def say_hello(name):      # name 是参数:一个"空位"
    print(f"你好,{name}!")

say_hello("小明")          # 调用时传进具体的值
say_hello("小红")

def add(a, b):            # 多个参数用逗号隔开
    print(a + b)

add(3, 5)                 # 输出 8

三、return:函数的"输出口"

函数算完的结果,怎么交回来?用 return:

def bmi(weight, height):
    return weight / (height ** 2)   # 把结果"交"回来

result = bmi(60, 1.75)    # 用变量接住交回来的结果
print(f"BMI={result:.1f}")
💡 print 和 return 别搞混:print 是"显示在屏幕上",看完就没了;return 是"把值交回来",交回来的值还能继续参与计算。需要结果的函数用 return。
def is_pass(score):
    return score >= 60     # 直接返回比较的结果:True/False

if is_pass(85):
    print("及格了")

四、作用域:变量的"活动范围"

作用域示意

x = 10            # 全局变量:在函数外面定义,哪儿都能用

def test():
    y = 5         # 局部变量:在函数里面定义,只能在函数里用
    print(x)      # 函数里可以用全局变量
    print(y)

test()
print(x)          # 10:外面能用 x
# print(y)        # 报错!外面看不到函数里的 y
全局变量局部变量
定义位置函数外面函数里面
能用范围到处都能用只在函数内部
比喻学校大喇叭,全校听见教室里说话,出门就听不见

五、动手练一练

练习 1:写一个函数 circle_area(r),接收半径返回圆面积(π 取 3.14),然后调用它算半径为 5 的圆面积。

练习 2:写一个函数 grade(score),用第六课的规则返回"优秀/良好/及格/不及格",然后用循环给 [95, 82, 76, 58] 逐个评级。

点击查看参考答案
# 练习1
def circle_area(r):
    return 3.14 * r ** 2

print(circle_area(5))   # 78.5

# 练习2
def grade(score):
    if score >= 90:
        return "优秀"
    elif score >= 80:
        return "良好"
    elif score >= 60:
        return "及格"
    else:
        return "不及格"

for s in [95, 82, 76, 58]:
    print(f"{s}分:{grade(s)}")
🎉 这一课你学会了:def 定义函数、参数、return、作用域。下一课是综合实战——把前十课的本事组装成一个真正能用的小程序!
More

相关教程