函数简介
Python函数的分类
内置函数:使用的 str() 、 list() 、 len() 等这些都是内置函数
标准库函数:通过 import 语句导入库
第三方库函数:下载安装这些库后,也是通过 import 语句导入
用户自定义函数:用户自己定义的函数
函数的定义和调用
#求和函数
def qui(a,b):
c=a+b
print(f'a+b=:{c}')
#返回数值c
return c
'''
这是返回a+b的值
return a+b
要返回多个值,使用列表、元组、字典、集合
return {1,2,3,4},
'''
#调用函数
qui(1,2)
#打印函数求和
print(qui(1,2))
a 和 b 称为“形式参数”,简称“形参”
1 和 2 就是实际参数
1:我们使用 def 来定义函数,然后就是一个空格和函数名称
2:return 返回值:如果函数体中包含 return 语句,则结束函数执行并返回值;
如果函数体中不包含 return 语句,则返回 None 值。
3:调用函数之前,必须要先定义函数,即先调用 def 创建函数对象
全局变量和局部变量
全局变量
# a就是全局变量
a=0
#函数内部就是局部
def q():
#这里的a是局部变量
a=12
print(a) #12
#想 局部变量变成全局变量就要用
global a
'''
好比房间是局部变量,房外是全局变量
你想去房外就要开门(钥匙就是 global )
'''
q()
print(a) # 0 这里是打印全局变量
print(a) # 12 有global 局部变量12 就变成全局变量12
参数的传递
a0=[10,20,'qwe',12.12,'lo']
a1={10,20,'qwe',12.12,'lo'}
a2={'text':'你好','home':'回家'}
def q(a0,a1,a2):
print(a0) #[10,20,'qwe',12.12,'lo']
print(a1) #{10,20,'qwe',12.12,'lo'}
print(a2) #{'text':'你好','home':'回家'}
q(a0,a1,a2)
可变对象有:字典、列表、集合、自定义的对象
不可变对象有:数字、字符串、元组、function
位置参数: 函数调用时,实参默认按位置顺序传递,需要个数和形参匹配。按位置传递的参数,称为:“位置参数”。
默认值参数
a0=[10,20,'qwe',12.12,'lo']
a1={10,20,'qwe',12.12,'lo'}
a2={'text':'你好','home':'回家'}
def q(a0,a1,a2 ,b=12,b1=40):
print(a0) #[10,20,'qwe',12.12,'lo']
print(a1) #{10,20,'qwe',12.12,'lo'}
print(a2) #{'text':'你好','home':'回家'}
print(b) # 12
print(b1) # 40
q(a0,a1,a2)
命名参数
a0=[10,20,'qwe',12.12,'lo']
a1={10,20,'qwe',12.12,'lo'}
a2={'text':'你好','home':'回家'}
def q(a0,a1,a2 ,b=12,b1=40):
print(a0) #[10,20,'qwe',12.12,'lo']
print(a1) #{10,20,'qwe',12.12,'lo'}
print(a2) #{'text':'你好','home':'回家'}
print(b) # 12
print(b1) # 40
#顺序打乱
q( a2={'text':'你好','home':'回家'},
a1={10,20,'qwe',12.12,'lo'},
a0=[10,20,'qwe',12.12,'lo']
)
lambda表达式和匿名函数
d=lambda a,b,c:a+b+c
print(d) #求三数之和
递归函数
1:递归(recursion)是一种常见的算法思路
2:递归的基本思想就是“自己调用自己”
3:终止条件:表示递归什么时候结束。一般用于返回值,不再调用自己:
4:归步骤:把第n步的值和第n-1步相关联
#使用递归函数计算阶乘
def q(a):
if a==1:
return 1
return n * q(n-1)
q(3)
内部函数
函数内部 套 函数
2:封装 - 数据隐藏,外部无法访问“嵌套函数”
3 :嵌套函数,可以让我们在函数内部避免重复代码。
4 :闭包