Python学习专栏· 函数(上):封装你的代码魔法——def 定义与参数传递
函数(上):封装你的代码魔法——def 定义与参数传递
理解函数的本质,掌握位置参数、关键字参数与默认值的用法
💡如果你写了10行代码,需要在5个地方用到,难道要复制粘贴5次?函数就是把重复的代码装进一个盒子,贴上名字,用的时候直接叫名字。# 定义函数(制作模具)def greet(name):"""打印问候语(这是docstring文档字符串)"""message=f"你好,{name}!欢迎学习Python!"return message# 调用函数(用模具)result=greet("小明")print(result)# 输出:你好,小明!欢迎学习Python!- 定义用`def 函数名(参数):`,代码块必须缩进
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="小杯"))# 关键字参数,顺序随意注意:默认参数必须在非默认参数的后面,关键字参数可以任意顺序传入。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,最大:9def func(a=1, b): # SyntaxError!def add_item(item, lst=[]): # 危险:默认列表被共享def add_item(item, lst=None): # ✅ 安全写法 调用 `def info(name, age=18, city="北京"):`,以下哪个调用合法?info("小明", 20, "广州", "工程师") ❌✅B 正确!位置参数必须在关键字参数之前,所以 A 非法;C 缺少必需的 name 参数;D 给出了多一个参数;B 正确,name 按位置传,city 用关键字传,age 使用默认值。用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"))# 英制函数(下):作用域、docstring 与模块化思维↑ Python学习专栏 · 第06期 · 函数(上):def 定义与参数传递篇 ↑