Python 函数:告别复制粘贴,让你的代码学会“叠buff” 文章目录第一章、函数是什么为什么要用它1.1 函数的本质1.2 怎么定义一个函数第二章形参与实参 —— 函数的“占位符”和“填空值”2.1 形参和实参是什么2.2 传参就像填空2.3 多个参数一个不够就多几个2.4 参数传递的顺序第三章函数的返回值 —— 把结果“吐”出来3.1 return —— 函数干完活了把结果给你3.2 没有 return 会怎样3.3 返回多个值返回元组第四章函数的几种常见用法4.1 无参无返回值 —— 纯执行4.2 有参无返回值 —— 接收输入只干活4.3 无参有返回值 —— 不需要外部输入直接出结果4.4 有参有返回值 —— 最常见的形式第五章、匿名函数 lambda —— 写完就扔的“一次性工具”总结前言如果你写过几行 Python 代码大概率经历过这样的场景写着写着发现同样的操作需要重复做三次。你的第一反应CtrlCCtrlV。于是代码变成了这样pythonprint(欢迎来到王者荣耀) print(欢迎来到王者荣耀) print(欢迎来到王者荣耀)三遍还好要是三十遍呢三百遍呢手按 CtrlV 按到抽筋这时候你就会想要是能把这段代码“打包”起来想用的时候喊一声就执行该多好。恭喜你你想的就是函数。函数就是给你的一段代码起个名字以后想用的时候只需要喊这个名字代码就自动跑一遍。而且每次跑还能换不同的“原料”进去做出不同的结果——就像煎饼果子摊流程是固定的摊饼、打蛋、撒料但你可以选加火腿还是加鸡柳。今天这一篇我们把函数的老底全掀了什么是函数、怎么定义、形参和实参是啥、怎么用。看完之后你的代码会变得像乐高积木一样想怎么拼就怎么拼。开整第一章、函数是什么为什么要用它1.1 函数的本质函数就是把一段代码打包起个名字随时调用。python# 定义一个函数 —— 像写一份“菜谱” def say_hello(): print(你好呀) print(欢迎来到 Python 世界) # 调用函数 —— 像照着菜谱做菜 say_hello() say_hello()输出text你好呀 欢迎来到 Python 世界 你好呀 欢迎来到 Python 世界 用函数的好处复用写一次用无数次清晰把复杂逻辑拆成小块每个函数只干一件事好改需求变了只改函数里面不用到处找1.2 怎么定义一个函数语法长这样pythondef 函数名(): 缩进的代码块def—— 关键词表示“我要定义函数了”函数名 —— 你自己起跟变量名规则一样字母数字下划线不能数字开头()—— 必须写里面放“参数”后面讲:—— 英文冒号别漏了缩进 —— 函数体统一缩进4个空格或一个Tab举个例子python# 写一个“点到为止”的函数 def show_menu(): print( * 20) print( 1. 开始游戏) print( 2. 继续游戏) print( 3. 设置) print( 4. 退出) print( * 20) # 调用它 show_menu()第二章形参与实参 —— 函数的“占位符”和“填空值”2.1 形参和实参是什么有时候函数需要接收外部传进来的数据才能干活。比如“做一道菜”你得告诉它“加什么食材”。这时候就需要参数登场了。pythondef cook(dish_name): # dish_name 就是形参形式参数 print(f正在烹饪{dish_name}) print(起锅烧油...) print(装盘上桌)形参形式参数定义函数时括号里写的变量名相当于“占位符”告诉调用者“我这里需要你传一个东西进来”。pythoncook(红烧肉) # 红烧肉 就是实参实际参数 cook(清蒸鱼) # 又传了一个不同的值实参实际参数调用函数时真正传进去的值就是“填空”的具体内容。一句话区别形参定义时写的占位名比如菜谱上写的“主料”实参调用时传的具体值比如你拿出来的五花肉2.2 传参就像填空pythondef greet(name): # name 是形参——占个位置 print(f你好{name}) print(f欢迎光临本店{name}先生/女士) # 调用传不同的实参进去 greet(王小明) # 实参 王小明 greet(李小红) # 实参 李小红输出text你好王小明 欢迎光临本店王小明先生/女士 你好李小红 欢迎光临本店李小红先生/女士2.3 多个参数一个不够就多几个函数可以接受多个参数用逗号隔开pythondef order(dish, quantity, spicyFalse): # 三个形参 print(f您点了 {quantity} 份 {dish}) if spicy: print(加辣) else: print(不加辣。) print(您的订单已提交请稍候...) # 调用 order(宫保鸡丁, 2, True) order(番茄炒蛋, 1) 默认参数spicyFalse表示如果你不传默认就是False不加辣。这叫默认参数。2.4 参数传递的顺序按位置传参最常用pythondef introduce(name, age, city): print(f我叫{name}今年{age}岁来自{city}) introduce(王小明, 18, 北京) # 按顺序name→王小明 age→18 city→北京关键字传参不按顺序指名道姓pythonintroduce(city上海, age20, name小红) # 打乱顺序也能认出来第三章函数的返回值 —— 把结果“吐”出来3.1return—— 函数干完活了把结果给你有些函数不需要返回值比如print()只是显示东西不给结果。但大部分函数干完活要把结果交到你手上这时候就要用return。pythondef add(a, b): result a b return result # 把计算结果“吐”出来 # 调用时用变量接住返回值 sum add(10, 20) print(sum) # 30return的两种形态return 值—— 返回具体结果return或直接不写 —— 返回None3.2 没有return会怎样pythondef just_print(a, b): print(a b) result just_print(10, 20) # 会打印 30 print(result) # None因为函数没有 return⚠️如果你要用函数的结果做进一步计算务必return。用print只是显示给人看程序拿不到数据。3.3 返回多个值返回元组pythondef get_user_info(): name 王小明 age 18 city 北京 return name, age, city # 实际上返回了一个元组 info get_user_info() print(info) # (王小明, 18, 北京) print(info[0]) # 王小明 # 也可以直接拆开接 name, age, city get_user_info() print(name, age, city)第四章函数的几种常见用法4.1 无参无返回值 —— 纯执行pythondef show_banner(): print( * 30) print( ☕ 欢迎光临 Python 咖啡馆) print( * 30) show_banner()适合显示菜单、打印分割线、执行固定流程。4.2 有参无返回值 —— 接收输入只干活pythondef charge(coins): print(f已投币 {coins} 枚请选择饮品) charge(5)4.3 无参有返回值 —— 不需要外部输入直接出结果pythonimport time def get_timestamp(): return int(time.time()) now get_timestamp() print(now)4.4 有参有返回值 —— 最常见的形式pythondef calc_discount(price, discount0.8): return price * discount final_price calc_discount(100) # 默认 8 折 → 80.0 final_price2 calc_discount(100, 0.6) # 6 折 → 60.0 知识点速查表概念说明示例函数定义用def定义代码块def cook():形参定义时的占位变量def cook(dish):里的dish实参调用时传入的具体值cook(红烧肉)里的红烧肉默认参数不传就用默认值def cook(dish, spicyFalse)返回值函数吐出的结果return result无返回值不写return默认返回None—第五章、匿名函数lambda—— 写完就扔的“一次性工具”有时候你只需要一个超级简单的函数就用一次连名字都懒得起。这时候lambda就派上用场了。lambda长啥样python# 普通函数 def add(a, b): return a b # lambda 写法一行搞定 lambda a, b: a blambda 参数: 返回值—— 左边是参数右边是返回的结果不需要写return它自动返回。怎么用通常赋值给一个变量python# 给 lambda 起个名字但不推荐这么用那还不如 def add lambda a, b: a b print(add(10, 20)) # 30lambda的真正用法不是起名字而是作为参数传给其他函数比如排序、过滤的时候临时写一个规则。经典场景搭配sorted()排序pythonstudents [ {name: 王小明, score: 85}, {name: 小红, score: 92}, {name: 小刚, score: 78} ] # 按分数排序升序 sorted_by_score sorted(students, keylambda x: x[score]) print(sorted_by_score) # [{name: 小刚, score: 78}, {name: 王小明, score: 85}, {name: 小红, score: 92}]keylambda x: x[score]的意思是从每个元素里取出score作为排序依据。这个函数只用一次不需要专门def一个直接用lambda搞定。另一个经典场景map()批量处理pythonnums [1, 2, 3, 4, 5] # 每个数字平方 squared list(map(lambda x: x ** 2, nums)) print(squared) # [1, 4, 9, 16, 25]lambda的限制只能写一行表达式python# ✅ 可以一行搞定 lambda a, b: a b # ❌ 不可以不能写多行不能写赋值语句 lambda a, b: result a b return result # 报错⚠️lambda适合非常简单的逻辑但凡要写多行、要判断、要循环老老实实用def。lambda一句话总结用完就扔的“一次性筷子”省得你专门洗一副碗筷。适合临时小逻辑别往复杂了整。总结函数学完之后你可以去干点真正“程序员”的事了。比如你写一个自动算外卖满减的函数、一个判断今天要不要带伞的函数、一个给群友发每日早安消息的函数——都是函数在手说走就走。学完函数我们在编写代码时不仅不用一直编写大量重复的代码也给我们的代码简易和丝滑锦上添花