在前四课中,我们掌握了变量、输入输出、条件判断和循环,已经能写出功能完整的小程序了。但随着代码越写越长,你可能会发现:同样的逻辑复制粘贴了好几遍,改一个地方就要改好几处,代码又乱又难维护。
今天,我们将学习 Python 中最重要的代码组织方式——函数。它能把一段完成特定任务的代码封装成一个“工具”,起个名字,之后随时随地调用。
一、定义与调用:创建你的第一个工具
使用 def 关键字定义函数,函数名后跟括号和冒号,函数体必须缩进:def greet(name): """向指定用户打招呼(这是文档字符串,用于说明函数作用)""" print(f"你好,{name}!欢迎来到Python世界!")# 调用函数greet("小明")greet("小红")
💡 核心原则:函数只定义不会执行,只有被调用时才会运行。就像你买了一个榨汁机,不按开关它就不会工作。二、参数与返回值:让函数更灵活
1. 参数:给函数传递信息
参数是函数的“输入”,让同一个函数能处理不同的数据:
def add(a, b): result = a + b print(f"{a} + {b} = {result}")add(3, 5) # 输出:3 + 5 = 8add(10, 20) # 输出:10 + 20 = 30
2. 返回值:让函数给出结果
如果函数需要把计算结果交还给调用者,就用 return。没有 return 的函数默认返回 None:def multiply(a, b): return a * b# 可以接收返回值做后续操作total = multiply(4, 6)print(f"乘积是:{total}") # 输出:乘积是:24
⚠️ 新手必知:print 只是把内容显示在屏幕上,return才是真正把值传回给调用方。很多新手混淆两者,导致后续计算出错。三、进阶:默认参数与关键字参数
1. 默认参数:给参数设置“保底值”
当某个参数经常使用相同的值时,可以设置默认值,调用时可以省略:
def introduce(name, age=18): print(f"{name}今年{age}岁")introduce("小李") # 输出:小李今年18岁(使用默认值)introduce("老王", 35) # 输出:老王今年35岁(覆盖默认值)
2. 关键字参数:按名字传参,不怕顺序错
当参数较多时,用“参数名=值”的方式传参,清晰不易错:
def create_user(name, age, city): print(f"{name}, {age}岁, 来自{city}")# 顺序可以任意,只要名字对应即可create_user(age=22, city="北京", name="小张")
四、实战:封装BMI计算器为函数
还记得第二课的 BMI 计算器吗?现在我们把它封装成函数,随时复用:
def calc_bmi(height, weight): """ 计算BMI指数 :param height: 身高(米) :param weight: 体重(公斤) :return: BMI值(保留两位小数) """ bmi = weight / (height ** 2) return round(bmi, 2)# 多次调用,无需重复写公式bmi1 = calc_bmi(1.75, 70)bmi2 = calc_bmi(1.60, 55)print(f"张三BMI:{bmi1}") # 输出:张三BMI:22.86print(f"李四BMI:{bmi2}") # 输出:李四BMI:21.48
五、新手避坑指南
- 忘记 return:想用函数的计算结果却忘了写 return,得到的是 None,后续运算全部报错。
- 默认参数放错位置:默认参数必须放在非默认参数后面,
def func(a=1, b) 会直接报语法错误。 - 函数内修改全局变量:函数内部创建的变量是局部变量,函数结束就消失。想修改全局变量需用
global 关键字(但新手阶段尽量避免使用)。 - 函数命名不规范:遵循小写字母+下划线规则,如
calc_bmi,不要用数字打头。
六、总结
至此,Python 基础语法五大核心模块全部学完!你已经具备了独立编写结构化程序的能力。下一课,我们将进入数据结构篇,学习列表、元组、字典,让你的程序能高效管理批量数据。