当前位置:首页>python>Python学习专栏· 函数(上):封装你的代码魔法——def 定义与参数传递

Python学习专栏· 函数(上):封装你的代码魔法——def 定义与参数传递

  • 2026-10-11 08:08:54
Python学习专栏· 函数(上):封装你的代码魔法——def 定义与参数传递
第 06 期
🐍 Python学习专栏

函数(上):封装你的代码魔法——def 定义与参数传递

理解函数的本质,掌握位置参数、关键字参数与默认值的用法

P
世外虚拟桃源:Python学习专栏
2026年05月 · 预计阅读 7 分钟
💡如果你写了10行代码,需要在5个地方用到,难道要复制粘贴5次?函数就是把重复的代码装进一个盒子,贴上名字,用的时候直接叫名字。
🗺️ 本期知识地图
👆 本期探索路径(默认高亮起点)
📦def 定义
↓
📞调用函数
📍位置参数
↓
🔑关键字参数
⚙️默认值
↓
🔙return 返回值
⚠️常见错误
📦
定义与调用
Chapter 1 · 制作模具与使用模具
# 定义函数(制作模具)def greet(name):"""打印问候语(这是docstring文档字符串)"""message=f"你好,{name}!欢迎学习Python!"return message# 调用函数(用模具)result=greet("小明")print(result)# 输出:你好,小明!欢迎学习Python!
🔬 关键规则
  • 1
    定义用`def 函数名(参数):`,代码块必须缩进
  • 2
    调用用`函数名(实参)`,定义时的括号内是形参
📍
三种参数类型
Chapter 2 · 位置参数、默认参数、关键字参数
deforder_coffee(size,flavor,sugar=True):"""size    → 位置参数(必须传)flavor  → 位置参数(必须传)sugar   → 默认参数(不传则用默认值True)"""    sugar_text="加糖" if sugar else "无糖"return f"{size} {flavor},{sugar_text}"# 三种调用方式print(order_coffee("大杯","拿铁"))# 用默认sugarprint(order_coffee("中杯","美式",False))# 覆盖默认值print(order_coffee(flavor="卡布奇诺",size="小杯"))# 关键字参数,顺序随意
🚦
注意:默认参数必须在非默认参数的后面,关键字参数可以任意顺序传入。
🔙
return 返回值
Chapter 3 · 把结果交回给调用者
def add(a,b):return a+b # 返回一个值def min_max(lst):return min(lst),max(lst)# 返回多个值(元组)lo,hi=min_max([3,1,4,1,5,9])print(f"最小:{lo},最大:{hi}")# 最小:1,最大:9
🧠
规则:没有return的函数默认返回None。
⚠️ 新手雷区
❌ 默认参数放在前面
def func(a=1, b):   # SyntaxError!
def func(a, b=1):   # ✅ 正确
❌ 可变对象作默认参数(经典陷阱)
def add_item(item, lst=[]):    # 危险:默认列表被共享
def add_item(item, lst=None):  # ✅ 安全写法     
    if lst is None:         
        lst = []     
    lst.append(item)     
    return lst
🎲 即时测一测
🧠 知识检测
调用 `def info(name, age=18, city="北京"):`,以下哪个调用合法?
A
info(age=20, "小明")  ❌
B
info("小明", city="上海")  ✅
C
info()  ❌
D
info("小明", 20, "广州", "工程师")  ❌
✅B 正确!位置参数必须在关键字参数之前,所以 A 非法;C 缺少必需的 name 参数;D 给出了多一个参数;B 正确,name 按位置传,city 用关键字传,age 使用默认值。
🚀 本期实战
⚡ CHALLENGE
BMI 计算函数
用def定义一个 BMI 计算函数,支持公制和英制单位!
def calc_bmi(weight,height,unit="metric"):"""计算BMI指数unit: "metric"(kg/m)或 "imperial"(lb/in)"""if unit=="imperial":         weight=weight*0.453592height=height*0.0254bmi=weight/ (height**2)return round(bmi,1)# 测试print(calc_bmi(70,1.75))# 公制print(calc_bmi(154,69,unit="imperial"))# 英制
⏱ 5分钟挑战
🌟 初级函数练习
📌 参数与默认值实战
🗺️ 本期知识树
函数决策树
def 函数名(参数): 定义函数
位置参数:按顺序传
关键字参数:指名传
默认参数:放在末尾
return:返回结果
👀
下期预告 · 第07期
函数(下):作用域、docstring 与模块化思维
深入理解变量作用域,写出规范、可维护的代码
↑ Python学习专栏 · 第06期 · 函数(上):def 定义与参数传递篇 ↑

最新文章

随机文章