尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Python 函数:告别复制粘贴,让你的代码学会“叠buff”

Python 函数:告别复制粘贴,让你的代码学会“叠buff”
📅 发布时间:2026/7/23 5:59:52

文章目录

第一章、函数是什么?为什么要用它

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 代码,大概率经历过这样的场景:

写着写着,发现同样的操作需要重复做三次。你的第一反应:Ctrl+C,Ctrl+V。

于是代码变成了这样:

python

print("欢迎来到王者荣耀") print("欢迎来到王者荣耀") print("欢迎来到王者荣耀")

三遍还好,要是三十遍呢?三百遍呢?手按 Ctrl+V 按到抽筋?

这时候你就会想:要是能把这段代码“打包”起来,想用的时候喊一声就执行,该多好。

恭喜你,你想的就是函数。

函数就是给你的一段代码起个名字,以后想用的时候,只需要喊这个名字,代码就自动跑一遍。而且每次跑还能换不同的“原料”进去,做出不同的结果——就像煎饼果子摊,流程是固定的(摊饼、打蛋、撒料),但你可以选加火腿还是加鸡柳。

今天这一篇,我们把函数的老底全掀了:什么是函数、怎么定义、形参和实参是啥、怎么用。看完之后,你的代码会变得像乐高积木一样,想怎么拼就怎么拼。

开整!🧩

第一章、函数是什么?为什么要用它

1.1 函数的本质

函数就是把一段代码打包,起个名字,随时调用。

python

# 定义一个函数 —— 像写一份“菜谱” def say_hello(): print("你好呀!") print("欢迎来到 Python 世界!") # 调用函数 —— 像照着菜谱做菜 say_hello() say_hello()

输出:

text

你好呀! 欢迎来到 Python 世界! 你好呀! 欢迎来到 Python 世界!

📌 用函数的好处:

  • 复用:写一次,用无数次

  • 清晰:把复杂逻辑拆成小块,每个函数只干一件事

  • 好改:需求变了,只改函数里面,不用到处找

1.2 怎么定义一个函数?

语法长这样:

python

def 函数名(): 缩进的代码块
  • def—— 关键词,表示“我要定义函数了”

  • 函数名 —— 你自己起,跟变量名规则一样(字母数字下划线,不能数字开头)

  • ()—— 必须写,里面放“参数”(后面讲)

  • :—— 英文冒号,别漏了

  • 缩进 —— 函数体统一缩进(4个空格或一个Tab)

举个例子:

python

# 写一个“点到为止”的函数 def show_menu(): print("=" * 20) print(" 1. 开始游戏") print(" 2. 继续游戏") print(" 3. 设置") print(" 4. 退出") print("=" * 20) # 调用它 show_menu()

第二章:形参与实参 —— 函数的“占位符”和“填空值”

2.1 形参和实参是什么?

有时候,函数需要接收外部传进来的数据才能干活。比如“做一道菜”,你得告诉它“加什么食材”。

这时候就需要参数登场了。

python

def cook(dish_name): # dish_name 就是形参(形式参数) print(f"正在烹饪:{dish_name}") print("起锅烧油...") print("装盘上桌!")

形参(形式参数):定义函数时括号里写的变量名,相当于“占位符”,告诉调用者“我这里需要你传一个东西进来”。

python

cook("红烧肉") # "红烧肉" 就是实参(实际参数) cook("清蒸鱼") # 又传了一个不同的值

实参(实际参数):调用函数时真正传进去的值,就是“填空”的具体内容。

📌一句话区别:

  • 形参:定义时写的占位名,比如菜谱上写的“主料”

  • 实参:调用时传的具体值,比如你拿出来的五花肉

2.2 传参就像填空

python

def greet(name): # name 是形参——占个位置 print(f"你好,{name}!") print(f"欢迎光临本店,{name}先生/女士") # 调用:传不同的实参进去 greet("王小明") # 实参 = "王小明" greet("李小红") # 实参 = "李小红"

输出:

text

你好,王小明! 欢迎光临本店,王小明先生/女士 你好,李小红! 欢迎光临本店,李小红先生/女士

2.3 多个参数:一个不够就多几个

函数可以接受多个参数,用逗号隔开:

python

def order(dish, quantity, spicy=False): # 三个形参 print(f"您点了 {quantity} 份 {dish}") if spicy: print("加辣!") else: print("不加辣。") print("您的订单已提交,请稍候...") # 调用 order("宫保鸡丁", 2, True) order("番茄炒蛋", 1)

💡 默认参数:spicy=False表示如果你不传,默认就是False(不加辣)。这叫默认参数。

2.4 参数传递的顺序

按位置传参(最常用):

python

def introduce(name, age, city): print(f"我叫{name},今年{age}岁,来自{city}") introduce("王小明", 18, "北京") # 按顺序:name→"王小明" age→18 city→"北京"

关键字传参(不按顺序,指名道姓):

python

introduce(city="上海", age=20, name="小红") # 打乱顺序也能认出来

第三章:函数的返回值 —— 把结果“吐”出来

3.1return—— 函数干完活了,把结果给你

有些函数不需要返回值,比如print()只是显示东西,不给结果。但大部分函数干完活要把结果交到你手上,这时候就要用return。

python

def add(a, b): result = a + b return result # 把计算结果“吐”出来 # 调用时用变量接住返回值 sum = add(10, 20) print(sum) # 30

📌return的两种形态:

  • return 值—— 返回具体结果

  • return或直接不写 —— 返回None

3.2 没有return会怎样?

python

def just_print(a, b): print(a + b) result = just_print(10, 20) # 会打印 30 print(result) # None(因为函数没有 return)

⚠️如果你要用函数的结果做进一步计算,务必return。用print只是显示给人看,程序拿不到数据。

3.3 返回多个值(返回元组)

python

def 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 无参无返回值 —— 纯执行

python

def show_banner(): print("=" * 30) print(" ☕ 欢迎光临 Python 咖啡馆") print("=" * 30) show_banner()

适合显示菜单、打印分割线、执行固定流程。

4.2 有参无返回值 —— 接收输入,只干活

python

def charge(coins): print(f"已投币 {coins} 枚,请选择饮品") charge(5)

4.3 无参有返回值 —— 不需要外部输入,直接出结果

python

import time def get_timestamp(): return int(time.time()) now = get_timestamp() print(now)

4.4 有参有返回值 —— 最常见的形式

python

def calc_discount(price, discount=0.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, spicy=False)
返回值函数吐出的结果return result
无返回值不写return默认返回None—

第五章、匿名函数lambda—— 写完就扔的“一次性工具”

有时候你只需要一个超级简单的函数,就用一次,连名字都懒得起。这时候lambda就派上用场了。

lambda长啥样?

python

# 普通函数 def add(a, b): return a + b # lambda 写法(一行搞定) lambda a, b: a + b

📌lambda 参数: 返回值—— 左边是参数,右边是返回的结果,不需要写return,它自动返回。

怎么用?通常赋值给一个变量:

python

# 给 lambda 起个名字(但不推荐这么用,那还不如 def) add = lambda a, b: a + b print(add(10, 20)) # 30

💡lambda的真正用法不是起名字,而是作为参数传给其他函数,比如排序、过滤的时候临时写一个规则。

经典场景:搭配sorted()排序

python

students = [ {"name": "王小明", "score": 85}, {"name": "小红", "score": 92}, {"name": "小刚", "score": 78} ] # 按分数排序(升序) sorted_by_score = sorted(students, key=lambda x: x["score"]) print(sorted_by_score) # [{'name': '小刚', 'score': 78}, {'name': '王小明', 'score': 85}, {'name': '小红', 'score': 92}]

📌key=lambda x: x["score"]的意思是:从每个元素里取出score作为排序依据。这个函数只用一次,不需要专门def一个,直接用lambda搞定。

另一个经典场景:map()批量处理

python

nums = [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一句话总结:用完就扔的“一次性筷子”,省得你专门洗一副碗筷。适合临时小逻辑,别往复杂了整。


总结

函数学完之后,你可以去干点真正“程序员”的事了。

比如你写一个自动算外卖满减的函数、一个判断今天要不要带伞的函数、一个给群友发每日早安消息的函数——都是函数在手,说走就走。

学完函数我们在编写代码时,不仅不用一直编写大量重复的代码,也给我们的代码简易和丝滑锦上添花🧁

相关新闻

  • 2026年最新教程:照片压缩到20K以内怎么弄?亲测有效的免费方法 - 图片处理研究员
  • C#操作摇杆实战指南:从Win32 API到数据可视化
  • SteamVR Unity激光指针与移动系统开发指南

最新新闻

  • 腾讯混元大模型Hy3限免实战:API集成与代码生成最佳实践
  • 计算机毕业设计之基于SpringBoot的社区医疗中心预约挂号平台的设计与实现
  • 大语言模型思维链语言偏好分析:从Kimi K3英文推理现象到实践应对
  • DaVinci DM644x UART引导与闪存编程:从原理到工程实践
  • Maven项目中JUnit依赖配置与@AfterEach注解实战指南
  • Kimi K3模型技术解析:缩小中美AI差距的国产大模型实践

日新闻

  • 亨得利盐城维修点在哪里?手表维修保养地址指南**公示(2026年7月最新) - 亨得利官方
  • 提升.NET API安全性:Boxed.AspNetCore.Swagger认证授权最佳实践
  • 帝舵佛山**网点地址更新:2026年7月售后热线电话与服务客户指南 - 帝舵中国官方服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号