Python:第8天:函数(上)—— 把重复代码打包成“积木块”
今日目标理解函数的作用代码复用、模块化学会定义和调用函数掌握带参数的函数给函数“喂”数据掌握带返回值的函数让函数“吐”结果理解return和print的区别理解局部变量和全局变量的区别 一、为什么要用函数不用函数的问题python# 计算三个圆的面积 r1 3 area1 3.14 * r1 * r1 print(f半径{r1}的圆面积: {area1}) r2 5 area2 3.14 * r2 * r2 print(f半径{r2}的圆面积: {area2}) r3 7 area3 3.14 * r3 * r3 print(f半径{r3}的圆面积: {area3})如果算100个圆代码会变得又臭又长而且如果要把圆周率从3.14改成3.14159得改100个地方。用函数解决问题pythondef calc_area(r): area 3.14 * r * r return area # 调用3次 print(calc_area(3)) print(calc_area(5)) print(calc_area(7))只需要把公式写一遍后面随时调用。这就是代码复用。 编程有一个重要原则叫DRYDont Repeat Yourself—— 不要重复自己。函数是实现DRY的核心工具。️ 二、定义和调用函数2.1 基本语法pythondef 函数名(): 函数内部要执行的代码def是关键字表示“定义”函数名后面要有括号()和冒号:函数体要缩进2.2 最简单的例子打招呼python# 定义函数 def say_hello(): print(你好欢迎来到Python世界) # 调用函数 say_hello() say_hello()运行结果text你好欢迎来到Python世界 你好欢迎来到Python世界 定义函数时不会执行代码只有调用时才会执行。就像你盖好了房子定义住进去才叫使用调用。2.3 函数必须先定义后调用python# 错误示例先调用后定义 greet() # 报错函数还没定义 def greet(): print(Hello)报错textNameError: name greet is not defined 三、带参数的函数输入函数通常需要接收一些数据才能工作这些数据叫参数。3.1 一个参数pythondef greet(name): print(f你好{name}) greet(张三) greet(李四)运行结果text你好张三 你好李四3.2 多个参数pythondef introduce(name, age, city): print(f我叫{name}今年{age}岁来自{city}。) introduce(小明, 18, 北京) introduce(小红, 20, 上海)运行结果text我叫小明今年18岁来自北京。 我叫小红今年20岁来自上海。 参数按位置一一对应第一个参数对应第一个值第二个对应第二个值。 四、带返回值的函数输出有些函数只负责做事比如打印但更多时候我们需要函数返回一个结果供后续使用。这时要用return。4.1return的基本用法pythondef add(a, b): result a b return result # 调用函数拿到返回值 sum1 add(3, 5) print(sum1) # 8 # 也可以直接用在表达式中 sum2 add(10, 20) 100 print(sum2) # 1304.2 没有return的函数返回什么如果没有return函数默认返回None代表“空”。pythondef say_hello(name): print(f你好{name}) result say_hello(张三) print(result) # None运行结果text你好张三 None4.3return和print的区别非常重要这是新手最容易混淆的两个概念returnprint作用把值传回给调用者把值显示在屏幕上给人看后续能否使用✅ 能被变量接收继续计算❌ 显示后就没了无法继续使用python# return结果可以继续使用 def add_return(a, b): return a b result add_return(3, 5) print(result * 2) # 16拿到了返回值继续乘以2 # print结果只能在屏幕上看一眼 def add_print(a, b): print(a b) result add_print(3, 5) print(result) # None函数没有返回拿不到值记住这个口诀print是给人看的return是给程序用的。 五、默认参数值有时候我们希望参数有一个“默认值”如果调用时没传这个参数就用默认的。pythondef greet(name, greeting你好): print(f{greeting}{name}) greet(张三) # 使用默认的你好 greet(李四, 早上好) # 使用自定义的早上好运行结果text你好张三 早上好李四 带默认值的参数必须放在最后面。def greet(greeting你好, name):这样写会报错。实际应用日期格式化pythondef format_date(year, month, day, separator-): return f{year}{separator}{month}{separator}{day} print(format_date(2025, 6, 18)) # 2025-6-18默认用- print(format_date(2025, 6, 18, /)) # 2025/6/18 print(format_date(2025, 6, 18, .)) # 2025.6.18 六、变量的作用域局部 vs 全局6.1 局部变量在函数内部定义的变量叫局部变量只能在函数内部使用。pythondef test(): x 10 # 局部变量 print(x) # 可以在函数内部访问 test() print(x) # 报错函数外部访问不到 x报错textNameError: name x is not defined6.2 全局变量在函数外部定义的变量叫全局变量可以在任何地方访问读取。pythonname 全局的小明 # 全局变量 def show_name(): print(name) # 函数内部可以读取全局变量 show_name() # 全局的小明 print(name) # 全局的小明函数外部也能访问6.3 在函数内部修改全局变量global如果在函数内部想修改全局变量需要用global声明。pythoncount 0 # 全局变量 def increment(): global count # 声明要修改全局变量 count 1 increment() increment() print(count) # 2⚠️尽量少用global。过度使用会让代码变得混乱你不知道哪个函数在哪改了全局变量。一个更好的做法是把值通过参数传进去通过return传出来。python# 推荐做法不修改全局变量而是返回新值 def increment(n): return n 1 count 0 count increment(count) count increment(count) print(count) # 2 七、综合示例简单计算器python# 第8天综合示例简单的四则运算函数 def add(a, b): return a b def subtract(a, b): return a - b def multiply(a, b): return a * b def divide(a, b): if b 0: return 错误除数不能为0 return a / b # 使用函数 print( 简单计算器 ) x 10 y 3 print(f{x} {y} {add(x, y)}) print(f{x} - {y} {subtract(x, y)}) print(f{x} × {y} {multiply(x, y)}) print(f{x} ÷ {y} {divide(x, y)}) # 测试除0情况 print(divide(10, 0))运行结果text 简单计算器 10 3 13 10 - 3 7 10 × 3 30 10 ÷ 3 3.3333333333333335 错误除数不能为0 八、新手常见错误及解决错误现象错误代码示例解决方法NameError: function not defined在函数定义之前调用把调用代码移到函数定义后面SyntaxError: invalid syntax忘了写冒号:def my_func():IndentationError函数体没有缩进在函数体内按Tab或4个空格函数返回None但不是预期结果函数里只有print没有return用return返回结果UnboundLocalError在函数内给全局变量赋值但没声明global加上global 变量名或用参数传递参数顺序写错introduce(北京, 小明)检查定义时的顺序或使用关键字参数错误演示忘记returnpythondef double(n): result n * 2 # 忘记写 return result value double(5) print(value) # None 今日总结今天你学会了函数的作用代码复用、模块化用def定义函数带参数的函数传递数据进去带返回值的函数用return把结果传出来return和print的区别重要默认参数值局部变量和全局变量的区别

相关新闻

基于Delaunay三角剖分的无人驾驶赛车实时路径规划实践

基于Delaunay三角剖分的无人驾驶赛车实时路径规划实践

1. 项目概述:从赛道到路径的智能转换在大学生方程式无人驾驶赛车的世界里,路径规划是连接感知与控制的“大脑”。想象一下,你驾驶一辆赛车,眼前是一条由锥桶标记的复杂赛道,你的任务不是简单地沿着锥桶走,而…

2026/6/19 1:35:12阅读更多 →
Win11Debloat:Windows系统瘦身与隐私保护的终极解决方案

Win11Debloat:Windows系统瘦身与隐私保护的终极解决方案

Win11Debloat:Windows系统瘦身与隐私保护的终极解决方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

2026/6/19 1:35:12阅读更多 →
3分钟搭建B站UP主视频自动下载器,从此不错过任何精彩内容

3分钟搭建B站UP主视频自动下载器,从此不错过任何精彩内容

3分钟搭建B站UP主视频自动下载器,从此不错过任何精彩内容 【免费下载链接】bilibili-downloader B 站个人动态视频下载助手,支持下载B站个人动态更新的4k视频,运行该程序后,你所关注的UP主更新的视频第一时间下载保存。 项目地址…

2026/6/19 1:35:12阅读更多 →
如何在10分钟内为《原神》安装自定义模型导入工具:终极快速指南

如何在10分钟内为《原神》安装自定义模型导入工具:终极快速指南

如何在10分钟内为《原神》安装自定义模型导入工具:终极快速指南 【免费下载链接】GI-Model-Importer Tools and instructions for importing custom models into a certain anime game 项目地址: https://gitcode.com/gh_mirrors/gi/GI-Model-Importer 想要为…

2026/6/19 2:55:16阅读更多 →
AI 赋能电商产业增长新生态,梦饷科技入选上海市 AI 助力商业领域品牌发展案例集

AI 赋能电商产业增长新生态,梦饷科技入选上海市 AI 助力商业领域品牌发展案例集

近日,由上海市电子商务和消费促进中心编制的《上海市AI助力商业领域品牌发展案例集》在第十二届中国(上海)国际技术进出口交易会现场正式发布。本次活动以“AI赋能新消费・智享品质新生活”为主题,遴选了一批AI技术赋能商业品牌升…

2026/6/19 2:55:16阅读更多 →
贺州高口碑黄金铂金回收白银回收实体老店排行 5 家靠谱门店电话地址全收录

贺州高口碑黄金铂金回收白银回收实体老店排行 5 家靠谱门店电话地址全收录

贺州街头巷尾的黄金铂金白银回收门店鳞次栉比,招牌林立间难免鱼龙混杂,市民想要甄别靠谱变现渠道着实需要火眼金睛。小编实地走访、层层筛选,从本地众多商家中整理出一份正规回收门店清单,收录对象既有连锁老牌机构,也…

2026/6/19 2:55:16阅读更多 →
Effective C++ 条款53:不要轻忽编译器的警告

Effective C++ 条款53:不要轻忽编译器的警告

Effective C 条款53:不要轻忽编译器的警告 编译器作者通常对于程序将会发生的事情比程序员有更好的领悟。本条款告诉我们:严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告级别下争取「无任何警告」的荣誉。但不…

2026/6/19 2:55:16阅读更多 →
飞思卡尔MSC8101 DSP中断控制器原理与配置实战指南

飞思卡尔MSC8101 DSP中断控制器原理与配置实战指南

1. 项目概述中断,对于任何一个搞嵌入式开发的工程师来说,都是既熟悉又让人头疼的玩意儿。说熟悉,是因为它无处不在,是系统响应外部事件的“神经系统”;说头疼,是因为一旦配置不当,系统要么反应迟…

2026/6/19 2:50:16阅读更多 →
Photobucket付费墙背后:5美元买童年回忆却落得一场空!

Photobucket付费墙背后:5美元买童年回忆却落得一场空!

1. 付费墙初现如今身处万亿市值公司林立的时代,我们也不能轻易放弃5美元。就像Photobucket,它曾相当于过去的Imgur,我们小时候常把图片上传到这个网站,然后在各种论坛上分享链接,它简单好用,尽职尽责。但最…

2026/6/19 0:04:37阅读更多 →
如何在5分钟内掌握Mermaid Live Editor:实时图表编辑终极指南

如何在5分钟内掌握Mermaid Live Editor:实时图表编辑终极指南

如何在5分钟内掌握Mermaid Live Editor:实时图表编辑终极指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live…

2026/6/19 0:04:37阅读更多 →
yuzu模拟器内存修改技术深度解析:金手指功能实现原理与实践指南

yuzu模拟器内存修改技术深度解析:金手指功能实现原理与实践指南

yuzu模拟器内存修改技术深度解析:金手指功能实现原理与实践指南 【免费下载链接】yuzu 项目地址: https://gitcode.com/GitHub_Trending/yuz/yuzu yuzu作为目前最流行的开源Nintendo Switch模拟器,不仅提供了完整的游戏运行环境,还内…

2026/6/19 0:04:37阅读更多 →