函数是一段事先定义好的,可重复调用的代码块,用于简化代码的重复使用,而自定义函数则是编写者新定义的用于实现指定功能的函数。本篇文章将介绍python中自定义函数的相关操作
函数定义
def 函数名(形参):
函数体
使用时用 函数名(实参)
进行函数调用
形参用来接收实参对应的数据,并在函数体中作为变量,有四种:
- 必选参数:必须接收实参数据的参数,调用时实参与必选参数一一对应
- 默认参数:
def 函数名(形参=默认值)
;若调用时不传递对应参数,该形参使用默认值 - 可变参数:def 函数名(*形参);以元组形式接收所有实参,用于接收不确定数量的参数
- 关键字参数:def 函数名(**形参);以字典形式接收所有实参,实参格式应为 key=value;要限制关键字命名时用 def 函数名(*, 形参);*后的所有形参接收实参格式为形参=value
参数定义顺序:必选、默认、可选、关键字参数和命名关键字,即 def 函数名(a, b=0, *c, **d, *, e)
函数引用
可变变量作为实参时会传递在函数内的改变,相当于传递的是变量的引用,即地址;不可变变量作为实参则不会传递在函数内的改变,相当于传递变量的值(复制)
函数名引用:别名=函数名
,向别名传递函数名的引用,之后也可以用别名()
对相应函数进行调用
help(函数名)
查看函数或模块的说明文档
函数返回值
在函数体中用return 数据
,会将数据作为函数的值返回,遇到return后函数将不再执行;函数只能返回一个值,但数据可以是六大类型,若用逗号隔开多个值则会返回一个元组;return的可以是数据或函数
调用:变量=函数名(实参),函数将返回值赋给变量
函数嵌套
1.按调用顺序依次定义(被调用的函数在调用它的函数前定义)
2.在函数体内嵌套定义(要缩进,定义完要调用),即
def func1():
def func2():
func2代码
func2()
变量的作用域
全局变量:在整个文件中都生效,包括自定义的函数体内;
局部变量:函数内定义的局部变量仅在该函数内有效,不同函数可以定义重名的局部变量
在函数体内声明局部变量会屏蔽重名的全局变量,此时修改变量值不会传递出函数外
global 变量名
将变量声明为全局变量,这时函数内对变量的修改会传出函数
nonlocal 变量名
将变量声明为上一层级(父级)函数的局部变量,但不能为全局变量,从父级开始向内的函数对该变量的修改都能在父级下传递
匿名函数
函数名=lambda 形参:返回值
对简单函数定义,形参可用逗号隔开,通过返回值对形参之间进行单条简单运算或函数调用,如
func=lambda a, b:a+b
x=func(a, b) # 将a+b的值返回给x
拆包
多个变量=可迭代变量(元组、列表、字典)
的形式,将可迭代变量里的值一一赋给左边变量,字典只赋key值;要求赋值变量数与可迭代变量中的元素数相同,或出现一个可变变量(*变量),赋给可变变量的是一个切片