【小学生都能看懂的Python入门教程】第一章:和 Python 来场第一次握手 (基础入门) 函数——编写简洁优雅的代码:给代码穿上高定西装
函数——编写简洁优雅的代码:给代码穿上高定西装
一、函数是什么?代码界的咖啡机
1. 定义与调用:程序员的摩斯密码
函数就像办公室的咖啡机:
- 定义函数是组装咖啡机:
def make_coffee(beans, sugar=3): # 默认加3块糖的温柔
"""咖啡生产流水线(程序员续命系统)"""
process = f"研磨{beans}颗咖啡豆 → 加{sugar}块糖 → 注入灵魂"
return "☕️ "+process
- 调用函数是按下开关:
print(make_coffee(10)) # 输出:☕️ 研磨10颗咖啡豆 → 加3块糖 → 注入灵魂
print(make_coffee(15, 0)) # 程序员の美式自虐版
冷知识:程序员喜欢函数就像猫咪爱纸箱——因为能把自己藏的代码整齐收纳
二、参数与返回值:函数的快递服务
1. 参数类型全家桶
参数类型 | 点餐类比 | 代码示例 |
---|---|---|
位置参数 | “来份鱼香肉丝” | func(a, b) |
默认参数 | “微辣,不要香菜” | func(a, b=5) |
关键字参数 | “饮料要冰可乐去冰” | func(b=2, a=1) |
可变参数 | “这些小吃各来一份” | def func(*args) |
2. 返回值:函数的伴手礼
def split_bill(total, people):
aa = total / people
return aa, aa * 0.1 # 返回AA金额和小费
cost, tip = split_bill(300, 4)
print(f"每人付{cost}元,建议小费{tip}元") # 输出:每人付75.0元,建议小费7.5元
为什么函数要返回值?
就像你去便利店不能只给钱不拿商品——总得带点什么回来!
三、变量作用域:办公室与茶水间的战争
1. 全局变量 vs 局部变量
company = "代码乌托邦" # 全局变量:全公司可见的通知栏
def new_hire(name):
desk = "A区03工位" # 局部变量:只在本函数有效的便利贴
print(f"{name}加入了{company},坐在{desk}")
new_hire("程序员暖暖") # 正常运行
print(desk) # 报错!就像试图查看别人的私人抽屉
2. global声明:打破次元壁的喇叭
coffee_cups = 0
def drink_coffee():
global coffee_cups
coffee_cups += 1
print(f"今日续命第{coffee_cups}杯")
drink_coffee() # 第1杯
drink_coffee() # 第2杯(手开始颤抖)
情景剧:
全局变量:我是公司公告板,谁都能看!
局部变量:我是你工位上的便利贴,离职就消失
global
:我是行政部的扩音器,能让便利贴上公告板
四、实战演练:巧克力侦探函数
需求说明
从朋友数据中找出:
- 巧克力消费之王
- 平均消耗量
- 生成甜蜜报告
代码全解析
def find_chocoholic(friends):
"""巧克力猎人(甜蜜陷阱探测系统)"""
total = 0
max_eater = ""
max_amount = 0
for name, choc in friends.items():
total += choc
if choc > max_amount:
max_amount = choc
max_eater = name
avg = total / len(friends)
report = f"""
🍫 甜蜜调查报告 🍫
冠军:{max_eater}(月均{max_amount}g)
平均:{avg:.1f}g
警告:本月已超健康标准{max(0, avg-100)}g
"""
return max_eater, avg, report
# 朋友巧克力消耗数据(g/月)
friends = {
"小明": 500, # 自称只是"偶尔吃"
"大壮": 250,
"Lucy": 800, # 甜食消灭者
"张总": 150 # 在控糖的倔强
}
king, avg, report = find_chocoholic(friends)
print(report)
运行结果:
🍫 甜蜜调查报告 🍫
冠军:Lucy(月均800g)
平均:425.0g
警告:本月已超健康标准325.0g
冷知识:这个函数不仅能找巧克力狂魔,把choc
换成奶茶消费
就能变身奶茶侦探——这就是函数的魅力!
五、函数式编程の禅
# 新手写法
a = 5
b = 10
c = a + b
print(c)
# 函数式写法
def add(x, y):
"""数字恋爱结婚登记处"""
return x + y
print(add(5, 10))
# 大师写法(仅供观赏)
(lambda x,y: x+y)(5,10)
为什么程序员喜欢写函数?
为了在代码里玩俄罗斯套娃,还美其名曰"模块化设计"
结语:代码裁缝的自我修养
现在你已经掌握:
✅ 函数的定义与调用姿势
✅ 参数传递的多种玩法
✅ 变量作用域的边界法则
✅ 实际项目的函数封装
当你能把复杂问题像折纸一样拆解成函数模块时,就离写出"别人看不懂但觉得很厉害"的代码不远了。记住,好的函数就像香水——功能明确、封装精美、余韵悠长。
下期预告:《列表——你的超级笔记本:Python界的万能收纳术》
课后彩蛋:在巧克力函数中添加以下代码,收获隐藏惊喜:
if max_amount > 1000:
report += "\n 🚑 医疗建议:建议直接预约牙医!"
# 试试给Lucy改成1500g输入
代码学习,前言技术分享,深度分析编程技术,普及科普编程技术,天天都要敲代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)