快速学习Python基础知识详细图文教程3--函数
来源引用网络知识与某站曹老师视频相互结合学习记录仅供参考Python 基础知识三、函数函数是执行特定任务的一段代码程序通过将一段代码定义成函数并为该函数指定一个函数名这样即可在需要的时候多次调用这段代码例如之前使用的 range() 函数就是系统内置的函数功能是通过传入参数返回特定范围的数字序列函数名是 range当需要使用的时候可以直接调用函数名可反复多次使用函数的定义函数的定义语法def 函数名(形参列表):函数体由零条或多条可执行语句组成的函数return 返回值函数名要符合标识符定义取名的时候要有意义看名知义形参列表是定义该函数可以接受的参数可以为空多个参数之间使用逗号隔开调用函数的地方传入对应的参数值return 返回值返回函数的执行结果若没有返回值可省略# 定义一个最基础的函数例如 say_helloworld def say_helloworld(): print(Hello World!) # 调用函数直接使用函数名 say_helloworld say_helloworld() # 再次调用 say_helloworld 函数 say_helloworld() 运行结果 Hello World! Hello World!函数的参数函数形参部分可以不定义参数直接空括号即可若有多个参数可以使用 ”,“ 逗号隔开在调用的时候传入的就是实际参数按照形参定义顺序传入即可# 定义一个加法函数 def add(a, b): result a b print(f{a} {b} {result}) # 调用函数 add(1, 2) add(3, 4) add(5, 6) 运行结果 1 2 3 3 4 7 5 6 11关键字(keyword)参数上面的实例中是位置参数在调用的时候必须严格按照定义函数时指定的顺序来传入参数值若根据参数名来传入参数值则无需蹲守定义形参的顺序这种方式被称为关键字(keyword)参数注意点在使用关键字参数的时候顺序可以随便换部分使用关键字参数部分使用位置参数混合使用的时候关键字参数必须位于位置参数之后否则会报错# 定义一个加法函数 def add(a, b): result a b print(f{a} {b} {result}) # 根据关键字参数来传入数值 add(a1, b2) # 在使用关键字参数的时候指定参数名后顺序可以随意更换 add(b2, a3) # 混合使用部分使用位置参数部分使用关键字参数 add(4, b5) # 在混用时关键字参数务必要在位置参数之后否则报错 # add(b6, 7)参数默认值在某些情况下程序需要在定义函数时为一个或多个形参指定默认值这样在调用函数时就可以省略为该形参传入参数值而是直接使用该形参的默认值语法格式形参名默认值# 定义一个加法函数 def say(name张三, msg法外狂徒): print(f{name} 的称号是{msg}) # 全部使用默认参数 say() # 部分使用默认参数 say(李四) # 都不使用默认参数 say(王二, 客栈王小二弟弟) # name使用默认参数值msg则需要使用关键字参数 say(msg西行记大师) 运行结果 张三 的称号是法外狂徒 李四 的称号是法外狂徒 王二 的称号是客栈王小二弟弟 张三 的称号是西行记大师注意点可以全部使用默认参数可以部分使用默认参数可以全部不使用默认参数假如前面参数使用默认参数后面的参数需要使用关键字参数Python 要求将带有默认值的参数定义放在形参列表的最后函数的返回值函数执行完毕可以返回数据给方法的调用者可以通过 return 关键字返回多个数据# 定义一个加法函数 def add(a, b): result a b # 通过return关键字把ab的结果返回给函数的调用者 return result # 定义变量r接收函数的返回值 r add(1, 2) print(f调用add(1,2)的返回值结果是{r}) # 定义变量r2接收函数的返回值 r2 add(3, 4) print(f调用add(3,4)的返回值结果是{r2}) 运行结果 调用add(1,2)的返回值结果是3 调用add(3,4)的返回值结果是7如果程序需要多个返回值则即可将多个值包装成列表之后返回也可直接返回多个值如果 Python 函数直接返回多个值Python 会自动将多个返回值封装成元组如果函数没有使用 return 语句返回数据则函数返回的是 None 值None 是空的意思# 定义一个最基础的函数例如 say_helloworld def say_helloworld(): print(Hello World!) # 调用函数 result say_helloworld() print(f返回的结果是{result}返回的类型是{type(result)}) 运行结果 Hello World! 返回的结果是None返回的类型是class NoneType这个 None 值有哪些作用呢1、可以用于 if 判断2、可以用于声明无初始化内容的变量# 定义一个最基础的函数例如 say_helloworld def check_user(username, password): if username test01 and password 123456: return success else: return None result check_user(test01, 123456789) print(f返回的结果是{result}) # 1可以用于if判断 # if result None: # 可以省略直接使用not if not result: print(登录失败) # 2可以用于声明无初始化内容的变量 usernames None print(usernames) 运行结果 返回的结果是None 登录失败 None函数的说明文档使用 (三个引号)备注说明然后在调用函数的地方鼠标移动上去就能看到函数的说明提供代码的可读性def add(a, b): 两数相加函数 :param a: 两数相加数中的a :param b: 两数相加数中的a :return: 两数相加的结果 return a b add(1, 2)变量作用域在程序中定义一个变量时这个变量是有作用范围的变量的作用范围被称为它的作用域根据定义变量的位置变量分为两种局部变量在函数中定义的变量包括参数都被称为局部变量全局变量在函数外面、全局范围内定义的变量被称为全局变量1、局部变量def test(): name abc123 # 在方法里面定义局部变量name print(name) test() # 局部变量外面无法使用 print(name)2、全局变量name2 test01 def name_test(): name abc123 # 在方法里面定义局部变量name print(name) name_test() # 局部变量外面无法使用 # print(name) # 打印全局变量 print(name2) 运行结果 abc123 test01使用 global 关键字声明全局变量name_t test01 def name_test(): name_a abc123 # 在方法里面定义局部变量name print(name_a) global name_d name_d dev007 name_test() # 局部变量外面无法使用 # print(name_a) # 打印全局变量 print(name_d) 运行结果 abc123 dev007递归函数在一个函数体内调用它自身被称为函数递归自己调用自己函数递归包含了一种隐式的循环它会重复执行某段代码但是这种重复执行无需循环控制例如求 123...100 之和使用递归实现数学公式f(n)nf(n-1)def cel(n): # 递归出口 if n 1: return 1 return n cel(n-1) print(cel(100)) 运行结果 5050注意点递归算法必须要有一个递归出口条件否则会无限死循环斐波那契数列示例斐波那契数列递归解法0、1、1、2、3、4、5、13、21、34、55、89、...... 这个数列从第3项开始每一项都等于前两项之和显然这是一个线性递推数列。在数学上斐波那契数列以如下被以递推的方法定义F(0)0,F(1)1,F(n)F(n-1)F(n-2) (n3n∈N*)def cel(n): # 递归出口基本情况F(0)0F(1)1 if n 0: return 0 elif n 1: return 1 # 递归情况F(n)F(n-1)F(n-2) else: return cel(n - 1) cel(n - 2) # 计算斐波那契数列的第m个数字 m 15 print(f斐波那契数列的第{m}个数字是{cel(m)})斐波那契数列Fibonacci sequence又称黄金分割数列、因数学家列昂纳多·斐波那契Leonardoda Fibonacci以兔子繁殖为例子而引入故又称为“兔子数列”指的是这样一个数列1、1、2、3、5、8、13、21、34、……在数学上斐波纳契数列以如下被以递归的方法定义F(0)1F(1)1, F(n)F(n-1)F(n-2)n2n∈N*拓展斐波那契数亦称之为斐波那契数列意大利语 Successione di Fibonacci)又称黄金分割数列、费波那西数列、费波拿契数、费氏数列和兔子数列指的是这样一个数列0、1、1、2、3、5、8、13、21、……在数学上斐波纳契数列以如下被以递归的方法定义F00F11FnF(n-1)F(n-2)n2n∈N*用文字来说就是斐波那契数列列由 0 和 1 开始之后的斐波那契数列系数就由之前的两数相加。由来在数学历史上欧洲黑暗时期过后第一位有影响的数学家是斐波那契(LFibonacci1170一1250)。他早年就随其父在北非师从阿拉伯人学习算学后又游历地中海沿岸诸国回意大利后写成《算经[xq2] 》也翻译成《算盘书》。这部很有名的著作主要是一些源自古代中国、印度和希腊的数学问题的汇集内容涉及整数和分数算法、开方法、二次和三次方程以及不定方程。特别是在1228年的《算经》修订版上载有如下“兔子问题”如果每对兔子一雄一雌每月能生殖一对小兔子也是一雄 一[xq3] 雌下同每对兔子第一个月没有生殖能力但从第二个 月[xq4] 以后便能每月生一对小兔子.假定[xq5] 这些兔子都没有死亡现象那么从第一对刚出生的兔子开始12 个月以后会有多少 对[xq6] 兔子呢 解释说明为一个月[xq7] 只有一对兔子第二个月 仍然只有一对兔子第三个月这对兔子生了一对小兔子 共有 112 对兔子.第四个月[xq8] 最初的一对兔子又生一对兔 子共有 213 对兔子.则由第一个月到第十二个月兔子的 对数分别是1123581321345589144 ……后 人[xq9] 为了纪念提出兔子繁殖问题的斐波纳契 将这个兔子数 列[xq10] 称为斐波那契数列 即把 112358132134……这样的数列称为斐波那契数列。未完待续......

相关新闻

jest-when vs 原生Jest:为什么参数化Mock值得你切换?

jest-when vs 原生Jest:为什么参数化Mock值得你切换?

jest-when vs 原生Jest:为什么参数化Mock值得你切换? 【免费下载链接】jest-when Jest support for mock argument-matched return values. 项目地址: https://gitcode.com/gh_mirrors/je/jest-when jest-when是一个为Jest提供参数匹配返回值支持…

2026/7/12 20:04:40阅读更多 →
ChatGPT提示词效能跃迁:用这7个结构化指令模板,将响应准确率从61.3%提升至94.8%(附AB测试原始日志)

ChatGPT提示词效能跃迁:用这7个结构化指令模板,将响应准确率从61.3%提升至94.8%(附AB测试原始日志)

更多请点击: https://kaifayun.com 第一章:ChatGPT 系统提示词大全 系统提示词(System Prompt)是模型行为的底层指令锚点,直接影响输出风格、角色设定、响应边界与安全策略。合理设计系统提示词,可显著提升…

2026/7/12 20:04:40阅读更多 →
gh_mirrors/webso/websocket-client 核心功能解析:从连接到消息处理全攻略

gh_mirrors/webso/websocket-client 核心功能解析:从连接到消息处理全攻略

gh_mirrors/webso/websocket-client 核心功能解析:从连接到消息处理全攻略 【免费下载链接】websocket-client 🔧 .NET/C# websocket client library 项目地址: https://gitcode.com/gh_mirrors/webso/websocket-client gh_mirrors/webso/websock…

2026/7/12 20:04:40阅读更多 →
“TVA-世界模型”引爆具身智能产业化奇点(14)

“TVA-世界模型”引爆具身智能产业化奇点(14)

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

2026/7/12 23:19:55阅读更多 →
“TVA-世界模型”引爆具身智能产业化奇点(15)

“TVA-世界模型”引爆具身智能产业化奇点(15)

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

2026/7/12 23:19:55阅读更多 →
Linux操作系统-防火墙

Linux操作系统-防火墙

Linux 防火墙实战:iptables 与 firewalld 全面解析 引言 “我的服务器怎么访问不了了?!” 相信不少运维新手都经历过这样的时刻——应用服务正常运行,端口也监听着,但浏览器就是打不开。折腾半天,最后试探性…

2026/7/12 23:19:55阅读更多 →
Spring Boot项目如何彻底禁用Nacos(服务发现+配置中心),本地启动不再依赖Nacos

Spring Boot项目如何彻底禁用Nacos(服务发现+配置中心),本地启动不再依赖Nacos

前言 在微服务项目中,我们经常使用 Nacos 作为服务注册中心和配置中心。但在本地开发时,每次启动都要先启动 Nacos 服务,既麻烦又影响启动速度。有时候我们只想调试业务代码,根本不需要 Nacos 的功能,这时候如果项目仍…

2026/7/12 23:19:55阅读更多 →
为什么要学函数式编程?

为什么要学函数式编程?

摘要 本文通过对比传统命令式循环与Java 8 Stream API的实战案例,阐述了学习函数式编程的必要性。针对“查询未成年作家高分书籍并去重”的场景,展示了Stream如何将复杂的嵌套逻辑转化为清晰的声明式流水线。文章指出,掌握函数式编程不仅能提…

2026/7/12 23:19:55阅读更多 →
Terraforming Rails死代码检测终极指南:Traceroute和FactoryTrace如何快速清理项目冗余

Terraforming Rails死代码检测终极指南:Traceroute和FactoryTrace如何快速清理项目冗余

Terraforming Rails死代码检测终极指南:Traceroute和FactoryTrace如何快速清理项目冗余 【免费下载链接】terraforming-rails Terraforming legacy Rails applications guides and tools 项目地址: https://gitcode.com/gh_mirrors/te/terraforming-rails 你…

2026/7/12 23:14:55阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/12 0:02:11阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/12 0:02:11阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/11 16:20:28阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/11 23:15:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/12 21:43:43阅读更多 →