📌Python修炼秘籍--函数和模块化编程(Day6)
一、函数的定义
1、函数
将用于进行某种计算或具有某种功能的一系列语句进行封装并命名
,方便其它程序代码调用
的子程序。
input()
将具有从键盘获取输入的一系列语句打包(封装),命名为input,在需要进行输入操作的地方调用,就可以实现输入功能。pow(x, y)
将计算x的y次方的语句封装,命名为pow,在需要计算幂运算的地方调用,就可以实现幂运算的功能。
函数的作用
- 减少代码重复,实现代码复用
- 提高代码可读性,降低维护成本
- 函数定义格式:
def 函数名([形参表]):
函数体语句序列
[return 表达式] #可选项,即有的函数可以没有返回值。
- ①
def
:定义函数的保留字,表明接下来要定义一个函数,函数体内的语句都带缩进。 - ②
函数名
:为下面代码起的一个能简单说明函数功能的名字。符合命名规则,PEP8规范约定函数名一般为小写字母,多个单词间下划线_隔开。应具有一定含义如read_file()
、get_data()
- ③
参数列表
:0或多个形式参数,函数调用时,参数名用于接受传入的对象。 - ④
文档注释
:文档注释字符串,解释函数的参数和功能等信息 - ⑤
返回值
:将函数处理的结果通过return后的变量返回给调用函数的地方。
2、函数调用
- 利用函数实现某些功能
- 先定义后调用,函数定义放在调用之前
- 函数调用格式:
函数名([实参表])
- 说明:
– 函数必须先定义,后使用;
– 函数名与变量名的命名规则相同,只能包含字母、数字和下划线_,且不能以数字打头。
● 函数定义时可以有多种参数,也可以没有参数
● 函数定义时也可以没有return语句
● 一个return语句后也可以有多个返回值,多个值用一个元组封装后返回
● 函数可以有多个return语句
● 当函数有多条返回值语句时,只能执行其中一条
● 执行任意return语句都会结束函数调用
例1:累加函数
函数的使用一共分为四个步骤:
- 函数定义
- 函数调用
- 函数执行
- 函数返回
二、函数的参数传递
参数类型:位置参数,默认值参数,可变参数
位置参数
- 按照顺序,把函数调用时的参数对象依次传递给函数定义中的参数。
默认值参数
- 函数的参数在定义时可以指定默认值。当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代,必须放置在没有默认值的参数之后。
可变参数
- 函数参数的个数不定,既不确定参数总数量,通过参数前增加(*)实现。
例如max()和min()函数,计算多个参数中的最大最小值。
三、变量的作用域
根据程序中变量所在的位置和作用范围,变量分为局部变量和全局变量
1. 局部变量
- 指在函数内部定义和使用的变量,仅在函数内部有效,函数外不可访问。
2. 全局变量
- 指在函数之外定义的变量,在函数内部、外部都可以访问。
若要在函数内部修改全局变量的值,必须用global语句声明。
四、函数的递归
函数的递归调用:
- 函数调用的一种特殊情况。
函数自己调用自己
,自己再调用自己,自己再调用自己…… 当某个条件得到满足的时候就不再调用
了,然后再一层一层地返回直到该函数的第一次调用。
例2:计算阶乘
迭代方式
递归方式
例3:斐波那契数列求和
斐波那契数列的定义为:
- F(0)=F(1)=1,当n为0或1时;
- F(n)=F(n-1)+F(n-2),当n>=2;
第1步:实现计算斐波那契数列第i项的函数
第2步:通过for循环累加
五、Python内置函数
1、内置函数
- Python解释器内置,可以直接使用的函数
- Python 3.12内置了
71个函数
,可以直接使用,这些函数如下表所示,其具体语法可以参考官方文档https://docs.python.org/3/library/functions.html
Python字符使用Unicode编码,每个字符有一个单独对应的编号
-
ord()
对单个Unicode字符,返回代表它Unicode码的整数
-
chr()
返回Unicode码对应的字符,ord()的逆函数
-
bin()
将一个整数转换为带前缀 “0b” 的二进制数字符串 -
oct()
将整数转换为带前缀 “0o” 的八进制数字符串 -
hex()
将整数转换为带前缀 “0x” 前缀的小写十六进制数字符串。
六、匿名函数
1、lambda函数:匿名函数
-
lambda函数是一种不使用def定义函数的形式,其作用是能快速定义一个简短的函数。
-
lambda函数的函数体只是一个表达式, 所以lambda函数通常只能实现比较简单的功能,返回一些简单的运算结果。
-
lambda函数格式:
<函数名> = lambda <参数列表>: <表达式>
等价于
def <函数名>(<参数列表>):
return <表达式>
整理不易🚀🚀,关注和收藏后拿走📌📌欢迎留言🧐👋📣✨
快来关注我的公众号🔎AdaCoding 和 GitHub🔎 AdaCoding123