把重复代码打包成工具,用的时候喊一声,参数一扔,结果到手——这才是程序员的优雅"躺平"方式!
一、函数是什么?—— 代码界的瑞士军刀
# 传统写法:每次计算都要重写逻辑
a = 3
b = 4
result = a * b
print(f"{a}*{b}={result}") # 输出:3*4=12
# 函数版:定义一次,终身受用
def multiple(a, b):
result = a * b
print(f"[偷懒成功]{a}*{b}={result}")
multiple(3, 4) # 调用时只需一行代码
multiple(5, 6) # 想算就算,毫不费力
偷懒原理:把特定功能代码封装成可复用的"黑盒子",输入参数 → 执行魔法 → 输出结果
二、三步打造你的"懒人工具"
万能造函数公式:
def 你的工具名(原料1, 原料2...):
# 加工过程
return 成品 # 可选项
实战案例:自动早餐机
def make_breakfast(主食="面包", 饮品="咖啡"):
print(f"【早餐已就绪】{主食}+{饮品},请慢用!")
make_breakfast("煎饼", "豆浆") # 输出:煎饼+豆浆
make_breakfast() # 用默认值:面包+咖啡
三、参数传递的"花式偷懒法"
1. 关键字参数(点菜式传参)
def cook(主菜, 配菜):
print(f"主菜:{主菜},配菜:{配菜}")
cook(配菜="沙拉", 主菜="牛排") # 无视顺序精准投喂
✨ 适合参数多时防混乱,就像对服务员说:"牛排要七分熟,配菜不要胡萝卜"
2. 默认值参数(备胎选项)
def order_drink(饮品="奶茶", 甜度="标准糖"):
print(f"您的{饮品},{甜度}制作中...")
order_drink() # 输出:奶茶+标准糖
order_drink("柠檬茶", "无糖") # 覆盖默认值
⚠️ 警告:默认值在函数定义时创建,避免用可变对象(如列表)
3. 位置参数(排队传参)
def 组队(队长, 队员):
print(f"队长:{队长},队员:{队员}")
组队("小明", ["小红", "小刚"]) # 顺序错了全乱套!
四、返回值——函数的"外卖服务"
# 返回单一值
def 计算快递费(重量):
return 重量 * 10 # 每公斤10元
运费 = 计算快递费(5)
print(f"请支付运费:{运费}元") # 输出:50元
# 返回多个值(自动打包成元组)
def 分割字符串(text):
return text[:3], text[3:] # 返回头尾两部分
头, 尾 = 分割字符串("HelloWorld")
print(f"头部:{头}, 尾部:{尾}") # 输出:Hel, loWorld
💡 遇到
return
函数立即停止执行,像外卖小哥送完货就走人
五、高阶偷懒术:参数打包&拆箱
▶ 组包:把散装参数打包
# *args 接收任意数量参数 → 元组
def 计算总分(*scores):
print(f"收到{len(scores)}科成绩:{scores}")
return sum(scores)
print(计算总分(90, 85, 92)) # 输出:267
# **kwargs 接收键值对 → 字典
def 生成简历(**info):
print("\n=== 个人简历 ===")
for k, v in info.items():
print(f"{k}:{v}")
生成简历(姓名="张三", 学历="博士", 技能="Python")
▶ 拆包:把容器拆成参数
# 列表拆箱 → 位置参数
def 显示坐标(x, y, z):
print(f"X:{x}, Y:{y}, Z:{z}")
坐标列表 = [10, 20, 30]
显示坐标(*坐标列表) # 等价于 显示坐标(10,20,30)
# 字典拆箱 → 关键字参数
def 连接数据库(host, port, user):
print(f"正在连接 {user}@{host}:{port}")
配置 = {"host":"8.8.8.8", "port":3306, "user":"admin"}
连接数据库(**配置) # 自动匹配参数名
六、实战:字符串转整数的"无赖解法"
def 字符串转整数(s: str) -> int:
"""不用int()强行转换的骚操作"""
映射字典 = {'0':0, '1':1, '2':2, '3':3, '4':4,
'5':5, '6':6, '7':7, '8':8, '9':9}
result = 0
for char in s:
result = result * 10 + 映射字典[char] # 核心算法
return result
print(字符串转整数("1949")) # 输出:1949
偷懒精髓:用字典模拟数字映射,通过十进制移位实现转换
附赠:lambda匿名函数(一次性工具)
# 传统函数
def 平方(x):
return x ** 2
# lambda版
平方 = lambda x: x ** 2
print(平方(5)) # 输出:25
🚨 适用场景:简单逻辑&临时使用,复杂功能请写正规函数!
终极偷懒心法
当你发现同样代码出现第三次时——立刻把它关进函数监狱!
函数就像代码世界的分身术:定义一次,无限召唤。
明天我们将升级装备——进入类与对象的魔法世界,教你用"工具箱"管理你的函数军团!
(程序员美学:用最优雅的方式做最懒的事)