Python函数入门:代码界的“万能偷懒术”

把重复代码打包成工具,用的时候喊一声,参数一扔,结果到手——这才是程序员的优雅"躺平"方式!

一、函数是什么?—— 代码界的瑞士军刀

# 传统写法:每次计算都要重写逻辑
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

🚨 适用场景:简单逻辑&临时使用,复杂功能请写正规函数!


终极偷懒心法

当你发现同样代码出现第三次时——立刻把它关进函数监狱!
函数就像代码世界的分身术:定义一次,无限召唤。
明天我们将升级装备——进入类与对象的魔法世界,教你用"工具箱"管理你的函数军团!

(程序员美学:用最优雅的方式做最懒的事)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值