Python函数定义与使用
一、函数的定义
1.1 函数是一段代码的表示
- 函数是一段具有特定功能的、可重用的语句组
- 函数是一种功能的抽象,一般函数表达特定功能
- 两个作用:降低编程难度、代码复用
1.2 函数的定义格式
函数可以有参数,也可以没有参数,但是必须保留括号
def <函数名>(<必选参数>,<可选参数>):
<函数体>
return <返回值>
1.3 函数IPO
- 函数定义时,所指定的参数是一种占位符,实际调用时,实际参数传递给形参,是函数的输入
Input
- 函数定以后,如果不调用,代码不会被执行
- 函数体是处理过程
progres
- 结果是输出
output
二、函数的使用及调用过程
2.1 调用是函数运行代码的方式
- 调用时要给出实际参数
- 实际参数替代形参
- 函数调用后得到返回值
三、 函数参数传递
函数可以有参数,也可以没有参数,但是括号必须保留。
def printMe():
print("Hello, World!")
3.1 必选参数&可选参数
必选参数
是参数的第一部分,必须要输入的参数。
函数定义时可以为某些参数指定默认值,构成可选参数
。可选参数放在必选参数后面。
def <函数名>(<必选参数>,<可选参数>):
<函数体>
return <返回值>
可选参数实例:
def fact(n, m=10):
s = 1
for i in range(1, n+1):
s *= i
return s/m
print(fact(10))
#362880.0
print(fact(10, 4))
#907200.0
不输入可选参数m时,函数会默认使用m=10
,输入可选参数m=4时,按照输入的可选参数运行。
3.2 可变参数
函数定义时可以设计可变数量参数
,既不确定参数总数量。
def <函数名>(<参数>, *b):
<函数体>
return <返回值>
可变参数实例:
def fact(n, *b):
s = 1
for i in range(1, n+1):
s *= i
for item in b:
s *= item
return s
print(fact(10))
#3628800
print(fact(10, 5, 4, 3))
#217728000
计算完n的阶乘之后,乘以可变参数*b,b参数的数量不受限制
,我们使用的math.max()和math.min()就是使用了可变参数。
四、函数参数传递的两种方式
- 按位置传递参数
- 按名称传递参数
以实例来说明:
def fact(n, m=10):
s = 1
for i in range(1, n+1):
s *= i
return s/m
print(fact(10, 5))
#725760.0
print(fact(m=5, n=10))
#725760.0
五、函数的返回值
函数可以返回0个或多个结果
- return保留字用来传递返回值
- 函数可以由返回值,可以可以没有返回值,可以由return,也可以没有return
- return可以返回0个返回值,可以可以传递多个返回值,多个返回值的时候返回的是元组
def fact(n, m=10):
s = 1
for i in range(1, n+1):
s *= i
return s/m, n, m
print(fact(10, 5))
#(725760.0, 10, 5)
六、局部变量和全局变量
简单记忆:
- 程序使用的变量:全局变量
- 函数使用的变量:局部变量
6.1 规则1:同名也不是同一个变量
- 局部变量是函数内部的占位符,即使局部变量与全局变量重名也是不同变量,在函数内部获取的是局部变量
- 函数调用完成后局部变量会释放
- 可以使用global保留字在函数内部使用全局变量
使用global声明全局变量:
6.2 规则2:局部变量为组合数据类型且未创建,等同于全局变量
- 对于全局的列表等组合数据类型,如果在函数内部新建立了一个同名的列表,则在函数内部,该列表是局部变量
- 如果没有在函数内部创建同名列表,则函数内部使用列表就是全局变量的列表
七、lambda函数
- lanbda函数是一种匿名函数,即没有名字的函数
- 使用lambda保留字,函数名是返回结果
- lambda用于定义简单的,能够在一行内表示的函数
<函数名>=lambda<参数>:<表达式>
实例1:
f = lambda x, y : x + y
实例2:
f = lambda : "lambda函数"
- lambda主要适用于一些特定的函数或方法的参数
- lambda有一些固定搭配,建议逐步掌握
- 一般使用def即可