当前位置:首页>python>40岁宝妈零基础学Python:函数进阶这3个坑,我替你踩过了

40岁宝妈零基础学Python:函数进阶这3个坑,我替你踩过了

  • 2026-10-11 05:46:14
40岁宝妈零基础学Python:函数进阶这3个坑,我替你踩过了

【摘要】40岁辞职学AI的第6天,学完Python函数进阶(默认参数、不定长参数、函数作为参数),分享3个踩坑经验+1个意外发现。

前言

40岁,学AI。

很多人说我疯了,但这个决定我做得很认真。

今天是第6天,学完了Python函数的进阶用法(第65-67课)。 分享一下学习过程和踩的3个坑,希望能帮到同样在自学的小伙伴。

一、默认参数:看似简单,一写就错

先看这段代码:

def reg_stu(name, age, gender=“男”, city=“北京”): 

print(f"注册成功, 姓名:{name}, 年龄:{age},性别:{gender}, 城市:{city}") return {“name”: name, “age”: age, “gender”: gender, “city”: city}

调用时可以不传有默认值的参数:

stu = reg_stu(“王林”, 20) # 使用默认值 gender=“男”, city=“北京” stu = reg_stu(“李慕婉”, 18, gender=“女”) # 只覆盖gender

但有个坑:默认参数必须放在没有默认值的参数后面!

错误写法:

def reg_stu(name, gender=“男”, age): # ❌ SyntaxError! pass

正确写法:

def reg_stu(name, age, gender=“男”): # ✅ pass

**二、不定长参数:*args 和kwargs

这是今天最有用的知识点!

*args - 接收不定长的位置参数,封装成元组

def calc_data(*args): min_data = min(args) max_data = max(args) avg_data = sum(args) / len(args) return min_data, max_data, round(avg_data, 1)

data = calc_data(10, 20, 30, 40, 50) # (10, 50, 30.0)

**kwargs - 接收不定长的关键字参数,封装成字典

def calc_data_v2(*args, **kwargs): if kwargs.get(“print”): print(f"最小值:{min(args)}, 最大值:{max(args)}") return min(args), max(args), sum(args)/len(args)

calc_data_v2(2, 7, 9, 10, 45, round=3, print=True)

参数顺序规则(重要!): 位置参数 → 默认参数 → *args → **kwargs

三、函数作为参数:传的是逻辑,不是数据

这个一开始很难理解,直到我写了这个例子:

def add(x, y): return x + y

def multiply(x, y): return x * y

def calc(x, y, oper): # oper接收的是一个函数! return oper(x, y)

result1 = calc(10, 20, add) # 30 result2 = calc(10, 20, multiply) # 200

关键区别:

add → 函数对象,✅可以当参数 add() → 函数调用,❌会报错 “add” → 字符串,❌不能调用

记住:函数名不加括号,括号引号都不行!

四、今天的意外收获:发现了一个bug

课程文档里说 calc_data 函数支持 round 参数控制小数位数。 但我看代码,发现 round(avg_data, 1)是写死的!

也就是说,即传了 round=3,也不会生效。

修复方法:

原来的代码(有bug)

avg_data = round(avg_data, 1) # 写死了

修复后的代码

round_param = kwargs.get(‘round’, 1) avg_data = round(avg_data, round_param)

学编程真的不能只看注释,要看实际执行逻辑!

五、总结:40岁学编程的优势

很多人担心年龄大了学不会。

但今天我发现,我们反而有优势:

  1. 更懂得总结 - 我每天整理错题本、速查表
  2. 更懂得避坑 - 年轻人可能跳过,我们会认真记下来
  3. 更有耐心 - 不急于求成,把基础打牢

今天学的3个知识点,我都整理成了记忆口诀:

默认参数放后面,可变对象别当值; 一颗星元组装,两颗星字典藏; 位置前关键后,顺序千万别反; 函数当参不加号,括号引号都不行!

后记

3年赚1000万的目标听起来疯狂,但我会一步步来。

今天是第6天,函数章节学完了。 明天开始学lambda匿名函数,然后是模块与包。

欢迎关注【小鹿的AI日记】,一起见证40岁宝妈的转行之路!

点击下方名片关注我 ↓↓↓

最新文章

随机文章