尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
快速学习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……这样的数列称为斐波那契数列。未完待续......
RELATED

相关推荐

数据结构基础期末复习例题

数据结构基础期末复习例题

Min-heap {7, 9, 14, 19, 25, 20, 16, 21}; result after inserting 2. 译 最小堆 {7, 9, 14, 19, 25, 20, 16, 21},插入 2 后的最小堆? 解 {2, 7, 14, 9, 25, 20, 16, 21, 19}。2 置于末端后上滤:与 19、9、7 依次交换,2 升至根 …

📅 2026/7/20 9:57:08
Perfsee源码解析:WebGL火焰图组件的实现原理

Perfsee源码解析:WebGL火焰图组件的实现原理

Perfsee源码解析:WebGL火焰图组件的实现原理 【免费下载链接】perfsee a set of tools for measuring and debugging performance of frontend applications 项目地址: https://gitcode.com/gh_mirrors/pe/perfsee Perfsee是一个专注于前端性能分析的工具集&…

📅 2026/9/8 21:22:53
PROMPT设计中的“边界感”:从一句规则说到三层对齐

PROMPT设计中的“边界感”:从一句规则说到三层对齐

事情的起点 📌在多轮对话生成任务的提示词编写中,我给出了一条规则说明:省略补全:第1轮建立上下文后,第2轮可省略主语或宾语。示例:第1轮"查一下四个轮胎的气压"→第2轮"左前的呢"模型…

📅 2026/8/10 22:30:22
MORE NEWS

更多资讯

📰

HTML+CSS星巴克主页源码拆解:从语义化骨架到响应式布局

简介:一份基于HTMLCSS实现的星巴克咖啡网站主页完整源代码,专为网页设计课程大作业而整理,尤其适合高校学生、前端初学者以及需要灵感或可直接提交作业的开发者。压缩包共17个文件,包括5个HTML页面、2个CSS外部样式表、7张GIF动态…

📰

React Native集成YOLO11实现移动端实时目标检测

1. 项目概述:React Native与YOLO11的跨界融合在移动应用开发领域,React Native以其跨平台特性广受欢迎,而计算机视觉中的YOLO系列模型则持续领跑实时目标检测赛道。当我们将YOLO11这一最新视觉模型与React Native框架结合,就诞生了…

📰

HTML+CSS+JS三件套构建可部署家乡静态页

简介:这是一份面向高校计算机专业低年级学生的Web前端课程实践项目资源,源自《Web编程基础》期末设计作业,主题为‘我的家乡’静态网页,适用于网页设计入门学习、课程大作业参考及个人作品集搭建。资源包共40个文件,包…

📰

Qt 5.14.2 aarch64静态交叉编译环境从零搭建实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

区块链众筹系统开发指南:Solidity智能合约与状态机实战

简介:基于区块链的众筹系统毕业设计资源包,面向计算机相关专业的学生、教师及企业开发者,既可作为毕业设计与课程设计的完整参考,也可用于项目初期立项演示或进阶学习。资源共含48个文件,压缩包约41KB,采用…

📰

FGO街机版PC移植全解析:Unity逆向、资源解包与中配优化

前天晚上在B站刷到一个让我停不下来的标题:“FGO街机版PC版开发中”。视频里UP主没有放预告片式的画饼内容,开场就是实机画面:竖屏窗口、指令卡战斗、从者建模、宝具演出,一套流程已经能跑通。弹幕和评论区瞬间变成“爷青回”现场…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬